【发布时间】:2022-01-07 16:15:53
【问题描述】:
我有 2 个大词典列表。这些是示例:
a= [{'name':'A','color':'1'},
{'name':'B','color':'2'},
{'name':'C','color':'3'},
]
b=[{'name':'A','color':'2'},
{'name':'x','color':'4'},
{'name':'x', 'color': '8'},
{'name':'p','color':'5'},
]
我会根据另一个字典中的 "Name" 过滤掉 B 列表,并保留 Name 字段中的唯一性
我试过了:
[i for i in a for i in (filter(lambda x: x['name'] == i['name'],b))]
结果:
[{'name': 'A', 'color': '2'}]
这个结果与我的预期相反,它保留了 2 个列表中的相似名称..
我的期望:
[
{'name':'x','color':'8'},
{'name':'p','color':'5'},
]
我需要 b 列表中不包含在 a.. 中的所有结果,还需要从 b 列表中删除唯一的..('name' : 'x' 只出现一次)
【问题讨论】:
-
你为什么期待
{'name':'x','color':'8'}而不是{'name':'x','color':'4'}? -
@SembeiNorimaki 因为它是 x 中的最后一个元素。所以
{'name':'x','color':'4'}将被{'name':'x','color':'8'}覆盖
标签: python json python-3.x