您應該d
直接使用.update()
:
def combine_report(r1, r2):
d = r1.copy()
d.update(r2)
return d
您試圖將鍵設置爲空詞典,然後對那些只有值的用戶調用.update()
;這要求該值爲可迭代;如果一個新書的值是None
這會導致您的具體情況例外:
>>> {}.update(None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not iterable
通過使用簡單的項目分配你的版本可以「修復」:
def combine_report(r1, r2):
to_merge = [r1, r2]
d={}
for m in to_merge:
for k, v in m.items():
d[k] = v
return d
但使用.update()
像顯示在我的版本將會更有效率。
如果你必須在每個鍵列表中保存的所有值,然後使用:
def combine_report(r1, r2):
d = {}
for m in to_merge:
for k, v in m.items():
d.setdefault(k, []).append(v)
return d
這裏,dict.setdefault()
將返回鍵k
價值,但如果k
尚不存在設置的默認值(這裏是一個列表)。
什麼是你作爲此輸入使用詞典? –