Merge dictionaries and add values
我有几个字典,我想把它们组合在一起,这样如果一个键在多个字典中,值就会加在一起。例如:
1 2 3 4 5 | d1 = {1: 10, 2: 20, 3: 30} d2 = {1: 1, 2: 2, 3: 3} d3 = {0: 0} merged = {1: 11, 2: 22, 3: 33, 0: 0} |
在Python中,最好的方法是什么?我在看《默认听写》,试图想出一些办法。我使用的是python 2.6。
使用
1 2 3 4 5 6 7 8 | >>> d = defaultdict(int) >>> for di in [d1,d2,d3]: ... for k,v in di.items(): ... d[k] += v ... >>> dict(d) {0: 0, 1: 11, 2: 22, 3: 33} >>> |
使用最常用的python标准函数和库:
1 2 3 4 | dlst = [d1, d2, d3] for i in dlst: for x,y in i.items(): n[x] = n.get(x, 0)+y |
。
不使用
不导入任何内容。.
1 2 3 4 5 6 | d4={} for d in [d1,d2,d3]: for k,v in d.items(): d4.setdefault(k,0) d4[k]+=v print d4 |
输出:
1 | {0: 0, 1: 11, 2: 22, 3: 33} |
号