我有2个字典列表:
dict1 = [{"a":1, "b":2, "c":1295}, {"a":2, "b":5, "c":6274}, {"a":3, "b":1, "c":5337}]
和
dict2 = `[{"a":1, "b":2, "d":1884}, {"a":2, "b":5, "d":2049}, {"a":3, "b":3, "d":1086}]
第一个字典列表包含键"a"
,"b"
和"c"
,而第二个列表包含键"a"
,"b"
和{{1 }}。
我想创建一个包含所有4个键的合并字典列表。仅需要合并"d"
和"a"
值相等的字典。
预期结果如下:
"b"
我正在寻找一种实现此目的的Python方式。
答案 0 :(得分:4)
假设两个列表中的合并候选对象是同一位置的字典,则可以将列表压缩在一起,使用列表理解,并使用**
-syntax idiom合并两个字典。
bsn
奖金>>> dicts1 = [{"a":1, "b":2, "c":1295}, {"a":2, "b":5, "c":6274}, {"a":3, "b":1, "c":5337}]
>>> dicts2 = [{"a":1, "b":2, "d":1884}, {"a":2, "b":5, "d":2049}, {"a":3, "b":3, "d":1086}]
>>>
>>> [{**d1, **d2} for d1, d2 in zip(dicts1, dicts2) if all(d1[k] == d2[k] for k in ('a', 'b'))]
[{'a': 1, 'b': 2, 'c': 1295, 'd': 1884},
{'a': 2, 'b': 5, 'c': 6274, 'd': 2049}]
解决方案:
pandas