关于python:合并字典并添加值

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。


使用defaultdict

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

不使用if-else检查,使用默认值为0dict.get检查简单易行。


不导入任何内容。.

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}