Pythonの2つの辞書のキーの同値の加算のいくつかの方法


2つの辞書A={'a':1,'b':2,'c':3},B={'b':4,'c':6,'d':8}を結合するには,キー値が同則的に加算される.
2つの辞書は、キーが同じであることを考慮する加算されなければ、d 1を用いることができる.update(d 2)は容易にマージできますが、このような後の辞書からの値は辞書d 1の値を上書きします.
>>> A = {'a': 1, 'b': 2}
>>> B = {'a': 8, 'c': 3}
>>> A.update(B)
>>> A
{'a': 8, 'b': 2, 'c': 3}

2つの辞書を考慮する場合は、キーが値に加算される問題を考慮すると、次のいくつかの方法が使用できます.
方法1:
>>> A = {'a': 1, 'b': 2, 'c': 3}
>>> B = {'b': 4, 'c': 6, 'd': 8}
>>> for key,value in B.items():
...     if key in A:
...         A[key] += value
...     else:
...         A[key] = value
>>> dict(sorted(A.items(), key=lambda d:d[1]))
{'a': 1, 'b': 6, 'd': 8, 'c': 9}

方法2:
>>> A = {'a': 1, 'b': 2, 'c': 3}
>>> B = {'b': 4, 'c': 6, 'd': 8}
>>> C = {}
>>> for key in list(set(A) | set(B)):
...     if A.get(key) and B.get(key):
...         C.update({key: A.get(key) + B.get(key)})
...     else:
...         C.update({key: A.get(key) or B.get(key)})
>>> C
{'c': 9, 'd': 8, 'a': 1, 'b': 6}

方法3:
>>> A = {'a': 1, 'b': 2, 'c': 3}
>>> B = {'b': 4, 'c': 6, 'd': 8}
>>> def dict_union(d1, d2):
...     keys = d1.keys() | d2.keys()
...     temp = {}
...     for key in keys:
...         temp[key] = sum([d.get(key,0) for d in (d1, d2)])
...     return temp
>>> C = dict_union(A, B)
>>> C
{'d': 8, 'a': 1, 'b': 6, 'c': 9}

方法4:
>>> A = {'a': 1, 'b': 2, 'c': 3}
>>> B = {'b': 4, 'c': 6, 'd': 8}
>>> C = {}
>>> for key1 in A:
...     for key2 in B:
...         if key1 in B:
...             C[key1] = A[key1] + B[key1]
...         else:
...             C[key1] = A[key1]
...             if key2 not in A:
...                 C[key2] = B[key2]
>>> C
{'a': 1, 'd': 8, 'b': 6, 'c': 9}

方法5:
>>> A = {'a': 1, 'b': 2, 'c': 3}
>>> B = {'b': 4, 'c': 6, 'd': 8}
>>> C = {}
>>> for key in A:
...     if B.get(key):
...         C[key] = A[key] + B[key]
...     else:
...         C[key] = A[key]
>>> for key in B:
...     if not A.get(key):
...         C[key] = B[key]
>>> C
{'a': 1, 'b': 6, 'c': 9, 'd': 8}