基于通用键合并2个字典列表的Python方法

时间:2018-12-05 22:12:16

标签: python python-3.x python-2.7 list dictionary

我有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方式。

1 个答案:

答案 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