【问题标题】:python: iterate through list and replace elements with corresponding dictionary valuespython:遍历列表并用相应的字典值替换元素
【发布时间】:2011-05-06 06:02:15
【问题描述】:

我正在尝试用在字典中查找的值替换列表元素值,我该怎么做?

列表 = [1, 3, 2, 10] d = {'id': 1, 'val': 30},{'id': 2, 'val': 53}, {'id': 3, 'val': 1}, {'id': 4 , 'val': 9}, {'id': 5, 'val': 2}, {'id': 6, 'val': 6}, {'id': 7, 'val': 11}, {'id': 8, 'val': 89}, {'id': 9, 'val': 2}, {'id': 10, 'val': 4} 对于列表中的 i: 对于 d.iteritems() 中的键 v: ??? ???

所以最后我期待:

列表 = [30, 1, 53, 4]

谢谢你

【问题讨论】:

  • @systempuntout:字典元组。
  • Dict 很奇怪。如果它是 {1 : 30, 2 : 53 ...} 事情会更容易。

标签: python list dictionary replace


【解决方案1】:
D2 = dict((x['id'], x['val']) for x in D)
L2 = [D2[x] for x in L]

【讨论】:

  • 如果问题反过来怎么办?
【解决方案2】:
   td = (
        {'val': 30, 'id': 1},
        {'val': 53, 'id': 2},
        {'val': 1, 'id': 3},
        {'val': 9, 'id': 4},
        {'val': 2, 'id': 5},
        {'val': 6, 'id': 6},
        {'val': 11, 'id': 7},
        {'val': 89, 'id': 8},
        {'val': 2, 'id': 9},
        {'val': 4, 'id': 10}
        )

    source_list = [1, 3, 2, 10]
    final_list = []

    for item in source_list:
        for d in td:
            if d['id'] == item:
                final_list.append(d['val'])

    print('Source : ', source_list)
    print('Final  : ', final_list)

结果

Source :  [1, 3, 2, 10]
Final  :  [30, 1, 53, 4]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-29
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 2013-08-19
    • 2021-06-30
    相关资源
    最近更新 更多