如何在python中加入2个dicts列表?

Tun*_*ung 5 python list python-2.7

我有2个这样的列表:

l1 = [{'a': 1, 'b': 2, 'c': 3, 'd': 4}, {'a': 5, 'b': 6, 'c': 7, 'd': 8}]

l2 = [{'a': 5, 'b': 6, 'e': 100}, {'a': 1, 'b': 2, 'e': 101}]
Run Code Online (Sandbox Code Playgroud)

并且我想获得一个列表l3,这是一个连接,l1并且两者的l2'a''b'它们相等l1,l2

l3 = [{'a': 1, 'b: 2, 'c': 3, 'd': 4, 'e': 101}, {'a': 5, 'b: 6, 'c': 7, 'd': 8, 'e': 100}]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Joh*_*ooy 8

您应该将结果累积到字典中.您应该使用'a'和'b'的值来形成此词典的键

在这里,我用a defaultdict来累积条目

l1 = [{'a': 1, 'b': 2, 'c': 3, 'd': 4}, {'a': 5, 'b': 6, 'c': 7, 'd': 8}]
l2 = [{'a': 5, 'b': 6, 'e': 100}, {'a': 1, 'b': 2, 'e': 101}]

from collections import defaultdict
D = defaultdict(dict)
for lst in l1, l2:
    for item in lst:
        key = item['a'], item['b']
        D[key].update(item)

l3 = D.values()
print l3
Run Code Online (Sandbox Code Playgroud)

输出:

[{'a': 1, 'c': 3, 'b': 2, 'e': 101, 'd': 4}, {'a': 5, 'c': 7, 'b': 6, 'e': 100, 'd': 8}]
Run Code Online (Sandbox Code Playgroud)