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)
我怎样才能做到这一点?
您应该将结果累积到字典中.您应该使用'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)