情况四:
两个字典A = {'a': 1, 'b': 2, 'c': 3}, B = {'b': 4, 'c': 6, 'd': 8} 要合并这两个字典,键值同则相加。
两个字典如果不考虑键相同则相加的话,可以使用d1.update(d2)可以很方便合并,但这样的后面的字典到中的值会覆盖字典d1中的值。
A = {'a': 1, 'b': 2}
B = {'a': 8, 'c': 3}
A.update(B)
print(A)
运行结果:{'a': 8, 'b': 2, 'c': 3}
如果要考虑两个字典,如果考虑键同则值相加的问题,可以使用下面的几种方法:
方法一:
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
print(dict(sorted(A.items(), key=lambda d:d[1])))
运行结果:{'a': 1, 'b': 6, 'd': 8, 'c': 9}
方法二:
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)})
print(C)
{'c': 9, 'd': 8, 'a': 1, 'b': 6}
方法三:
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)
print(C)
{'d': 8, 'a': 1, 'b': 6, 'c': 9}
方法四:
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]
print(C)
{'a': 1, 'd': 8, 'b': 6, 'c': 9}
方法五:
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]
print(C)
{'a': 1, 'b': 6, 'c': 9, 'd': 8}
来自:https://www.jb51.net/article/157352.htm
|