我如何合并dict1和dict2以便获得res? 最好使用.update()
dict1 = {'a':[1, 2, 3], 'b':[4, 5, 6]}
dict2 = {'a':[100, 101, 103], 'b':[104, 105, 106]}
res = {'a':[1, 2, 3, 100, 101, 103], 'b':[4, 5, 6, 104, 105, 106]}
答案 0 :(得分:3)
如果dicts具有相同的键:
>>> {k: v + dict2.get(k, []) for k, v in dict1.iteritems()}
{'a': [1, 2, 3, 100, 101, 103], 'b': [4, 5, 6, 104, 105, 106]}
如果不是:
>>> from itertools import chain
>>> res = {}
>>> for k, v in chain(dict1.iteritems(), dict2.iteritems()):
... res[k] = res.get(k, []) + v
...
>>> res
{'a': [1, 2, 3, 100, 101, 103], 'b': [4, 5, 6, 104, 105, 106]}
您可以在此解决方案中使用collections.defaultdict
:
>>> from collections import defaultdict
>>> res = defaultdict(list)
>>> for k, v in chain(dict1.iteritems(), dict2.iteritems()):
... res[k] += v
...
>>> dict(res)
{'a': [1, 2, 3, 100, 101, 103], 'b': [4, 5, 6, 104, 105, 106]}
答案 1 :(得分:1)
dict1 = {'a':[1, 2, 3], 'b':[4, 5, 6]}
dict2 = {'a':[100, 101, 103], 'b':[104, 105, 106]}
def combine(D1, D2):
D = collections.defaultdict(list)
for k, v in D1.items():
D[k] += v
D[k] += D2[k]
return D
答案 2 :(得分:1)
如果词典具有相同的键,我认为这是最简单的解决方案:
res = {k : dict1[k]+dict2[k] for k in dict1}
如果词典有不同的键,但你只关心相同的键:
res = {k : dict1[k]+dict2[k] for k in set(dict1) & set(dict2)}
否则,另一个答案就行了!
答案 3 :(得分:0)
这假设dict1和dict2具有相同的键
res = {}
for i in dict1.keys()
res[i] = dict1[i] + dict2[i]
这样的东西应该可以工作,我没有运行代码所以它可能是错的但是这个想法应该是正确的。