【发布时间】:2015-02-07 23:44:23
【问题描述】:
我有 2 个列表,每个列表中都有 dicts,我需要根据“id”键使用第一个列表中的值填充第二个列表中的值。现在我正在使用下面的代码,但感觉太复杂了(迭代次数太多)。有没有更pythonic的方式?
a = [{'id':1, 'tag':'11'},{'id':2, 'tag':'12'},{'id':3, 'tag':'13'},{'id':4, 'tag':'14'}]
b = [{'id':1, 'tag':None},{'id':2, 'tag':None},{'id':3, 'tag':None},{'id':4, 'tag':None}, {'id':5, 'tag':None}]
for item1 in a:
for item2 in b:
if item1['id'] == item2['id']:
item2['tag'] = item1['tag']
【问题讨论】:
-
如果密钥相同,为什么不直接使用
b = a? -
当你有一个字典列表时,这有时表明数据结构的选择是错误的。为什么需要字典列表?为什么你不能让你的列表成为一个单一的字典,并让“id”成为键并“标记”价值。
-
@Falmarri 更进一步,如果“id”字段始终是连续的,只需使用“标签”值列表。
标签: python list for-loop dictionary