如果我有两个看起来像这样的词典:
a = {"fruit":["orange", "lemon"], "vegetable":["carrot", "tomato"]}
b = {"fruit":["banana", "lime"]}
有没有办法可以更新词典' a'这样我就不会覆盖以前的数据,而只是追加它以便我的结果看起来像这样?
a = {"fruit":["orange", "lemon", "banana", "lime"], "vegetable": ["carrot", "tomato"]}
我知道有类似的东西,但不幸的是它重写了价值,这不是我想做的事情:
a.update(b)
#returns a dictionary like the following {"fruit":["banana", "lime"], "vegetable":["carrot","tomato"]}, again, not what I want.
答案 0 :(得分:4)
没有循环没办法:
for k, v in b.items():
a[k].extend(v)
这假设a[k]
实际存在。 。 。如果您想在缺少它的情况下添加它:
for k, v in b.items():
try:
a[k].extend(v)
except KeyError:
a[k] = v
答案 1 :(得分:1)
您可以使用defaultdict,但必须迭代这些项目。
from collections import defaultdict
a = defaultdict(list)
你也可以定义一个帮助方法(但要注意不要用普通的dict调用它,某种类型的检查可能是合适的):
def update(a,b):
for k, v in b.items():
a[k].extend(v)
另一个选项是扩展dict并覆盖update方法来执行此操作。