字典合并且累加值

场景:

两个字典,key有一部分相同但value不同。现要把两个字典合并,相同key的值累加。

代码:

# 目的:将字典a中元素累加到字典n中
In [12]: a = {'b': 1, 'c': 2, 'd': 3}

In [13]: n = {'a':1, 'd':2}

# 常规写法
In [14]: for i in a:
    ...:         if i not in n:
    ...:             n[i] = a[i]
    ...:         else:
    ...:             n[i] += a[i]
    ...: print(n)
{'a': 1, 'd': 5, 'b': 1, 'c': 2}


# 推荐写法1
In [18]: for i in a:
    ...:     n.setdefault(i, 0)
    ...:     n[i] += a[i]
    ...: print(n)
    ...:
    ...:
{'a': 1, 'd': 5, 'b': 1, 'c': 2}

# 推荐写法2
In [21]: for  i in a:
    ...:      n[i] = n.get(i, 0) + a[i]
    ...: print(n)
    ...:
    ...:
{'a': 1, 'd': 5, 'b': 1, 'c': 2}

 

10-04 10:44