Python一行合并字典,该字典具有公共值



我有什么:

a=[{'name':'a','vals':1,'required':'yes'},{'name':'b','vals':2},{'name':'d','vals':3}]
b=[{'name':'a','type':'car'},{'name':'b','type':'bike'},{'name':'c','type':'van'}] 

我尝试了什么:

[[i]+[j] for i in b for j in a if i['name']==j['name']]

我得到的:

[[{'name': 'a', 'type': 'car'}, {'name': 'a', 'vals': 1}], [{'name': 'b', 'type': 'bike'}, {'name': 'b', 'vals': 2}]]

我想要什么:

[{'name': 'a', 'type': 'car','vals': 1},{'name': 'b', 'type': 'bike','vals': 2}]

注意:

  1. 我需要将dict合并为一个dict
  2. 它应该只合并那些在a和b中都有共同"name"的名称
  3. 我想要python的一行答案

对于Python 3,您可以执行以下操作:

a=[{'name':'a','vals':1},{'name':'b','vals':2},{'name':'d','vals':3}]
b=[{'name':'a','type':'car'},{'name':'b','type':'bike'},{'name':'c','type':'van'}]
print([{**i,**j} for i in b for j in a if i['name']==j['name']])

最新更新