我认为我有正确的想法来解决这个功能,但它没有得到docstring中显示的所需结果我测试它。有人可以帮我解决这个问题吗?
def add_dicts(d1, d2):
'''(dict, dict) -> dict
Parameters d1 and d2 are dicts where each key is an int and each value is an
int. Return dict d1 with the contents of d2 added to d1. More concisely, if
key k is in d1 and in d2, update d1[k] to be the sum of d1[k] and d2[k]. If
d2 has a key that is not in d1, add the key value pair from d2 to d1.
>>> d1 = {1:1, 2:1, 3:2}
>>> d2 = {1:3, 3:1, 4:1}
>>> d = add_dicts(d1, d2)
>>> d == {1:4, 2:1, 3:3, 4:1}
True
'''
for (key, value) in d1.items():
if key in d1 and key in d2:
d1[key] = d1[key] + d2[key]
if key in d2 and key not in d1:
d1[key] = {key: value}
return d1
答案 0 :(得分:2)
不是迭代d1
项,而是迭代d2
:
for a, b in d2.items():
if a in d1:
d1[a] += b
else:
d1[a] = b
答案 1 :(得分:1)
在dict.get
找不到密钥时,您可以使用0
功能使用默认值d1
:
for key, val in d2.items():
d1[key] = d1.get(key, 0) + val