python:遍历列表并用相应的字典值替换元素

Posted

技术标签:

【中文标题】python:遍历列表并用相应的字典值替换元素【英文标题】:python: iterate through list and replace elements with corresponding dictionary values 【发布时间】: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 ... 事情会更容易。 【参考方案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]

【讨论】:

以上是关于python:遍历列表并用相应的字典值替换元素的主要内容,如果未能解决你的问题,请参考以下文章

Python基础语法

Python字典集合结构详解

python学习笔记第四节

字典对比:字典式元素组成的列表进行对比,如同键,值相减

Python如何获取这个字典中指定列表和指定元素?

python如何将列表中的元素添加进字典