映射两个列表

piy*_*yer 0 python

我有两个这样的列表:

list1 = [{'id':1, 'name':'foo', 'age':20}, {'id':2, 'name':'foo', 'age':20}]

list2 = [{'id':2, 'created':'2004-12-23'}, {'id':12, 'created':'2004-12-23'}, 
         {'id':1, 'created':'2004-12-23'}]

list1 = [{'id':1, 'name':'foo', 'age':20, 'match':True}, 
         {'id':2, 'name':'foo', 'age':20, 'match':True}]
Run Code Online (Sandbox Code Playgroud)

如果list1和list2的id匹配,我想将匹配添加到相应的列表.我该如何有效地做到这一点?

Ign*_*ams 5

set2 = set(x['id'] for x in list2)
for entry in list1:
  if entry['id'] in set2:
    entry['match'] = True
Run Code Online (Sandbox Code Playgroud)

要么

set2 = set(x['id'] for x in list2)
for entry in list1:
  entry['match'] = entry['id'] in set2
Run Code Online (Sandbox Code Playgroud)