我想合并这两个字典,结果应该如下:
D3={'a':1,'b':2,'c':3,'b':2,'c':3,'d':1}
在Python中,你不能这样做。在Python dict中每个key只能对应一个value。你可以用列表或集合作为值来实现相似的功能。
以下是使用集合的示例:
d1 = { 'a': 1, 'b': 2, 'c': 3 }
d2 = { 'a': 1, 'b': 5, 'd': 4 }
d3 = {}
def add_dict(target, d):
for key in d:
target.setdefault(key, set([])).add(d[key])
add_dict(d3, d1)
add_dict(d3, d2)
这将给你d3
:
{'a': set([1]), 'c': set([3]), 'b': set([2, 5]), 'd': set([4])}
你也可以使用列表来实现这个功能(可能更接近你的示例):
d1 = { 'a':1, 'b':2, 'c': 3}
d2 = { 'b':2 ,'c':3, 'd': 1}
d3 = {}
def add_dict(target, d):
for key in d:
target.setdefault(key, []).append(d[key])
add_dict(d3, d1)
add_dict(d3, d2)
你将得到这个:
{'a': [1], 'c': [3, 3], 'b': [2, 2], 'd': [1]}
然而,如果看一下 {'a':1,'b':2,'c':3,'b':2,'c':3,'d':1}
(这不可能是一个字典),似乎你想要的是完全不同的数据结构。也许像这样:
d1 = { 'a':1, 'b':2, 'c': 3}
d2 = { 'b':2 ,'c':3, 'd': 1}
result = []
result += [ { 'key': key, 'value': d1[key] } for key in d1 ]
result += [ { 'key': key, 'value': d2[key] } for key in d2 ]
这将产生以下结果,看起来更接近于你最初考虑的数据结构:
[ {'value': 1, 'key': 'a'},
{'value': 3, 'key': 'c'},
{'value': 2, 'key': 'b'},
{'value': 3, 'key': 'c'},
{'value': 2, 'key': 'b'},
{'value': 1, 'key': 'd'} ]
{'a':1,'b':2,'c':3,'b':2,'c':3,'d':1}
不是 Python 字典。 - eumiro