仅当它们具有匹配的值时,才如何添加列表中的键值?

时间:2018-12-11 17:31:32

标签: python python-2.7 list dictionary tuples

所以我有这个字典列表:

[{u'id': u'53532', u'name': u'IMG_1.jpg'},
 {u'id': u'53533', u'name': u'IMG_2.jpg'},
 {u'id': u'53534', u'name': u'IMG_3.jpg'}]

此元组列表:

[(53532, image ,'https://sample.jpg'),
 (53533, image ,'https://sample.jpg'),
 (53534, image ,'https://sample.jpg')
]

如何将字典的id值与元组中的id匹配,以及如何匹配以将元组添加到匹配的字典中的新键中?

例如,如果它们匹配看起来像这样:

{u'id': u'53532',
 u'name': u'IMG_1.jpg',
 u'img_attr':(53532, image ,'https://sample.jpg')
}

1 个答案:

答案 0 :(得分:3)

Python 3.5 +

您可以使用id作为键,将元组列表转换为具有元组值的字典:

d = {i: tuple(j) for i, *j in L_tup}

然后对结果使用列表理解:

res = [{**myd, 'img_attr': d[int(myd['id'])]} for myd in L_dict]

Python 2.7

Python 2.x不支持序列和字典解压缩。在这里您可以使用:

d = {i: (j, k) for i, j, k in L_tup}

for myd in L_dict:
    myd['img_attr'] = d[int(myd['id'])]

那么您想要的结果就是L_dict