是否可以将两个单独的字典相乘以更新第一个字典/创建第三个字典?
类似...
d1 = {'apples':2, 'oranges':3, 'bananas':4}
d2 = {'apples':4, 'oranges':6, 'bananas':8, 'pears':10}
update_d1 = {}
for i in d1:
update_d1[i] = d1[i] * d2[i]
print(update_d1)
答案 0 :(得分:6)
一种方法是对集合键的并集使用dict理解,使用get
,乘法的默认值为1:
>>> { k: d1.get(k, 1) * d2.get(k, 1) for k in d1.keys() | d2.keys() }
{'pears': 10, 'bananas': 32, 'oranges': 18, 'apples': 8}
答案 1 :(得分:3)
defaultdict
解决方案如何?这样就可以更新其中一个词典。
from collections import defaultdict
d1 = defaultdict(lambda : 1, d1)
for k in d2:
d1[k] *= d2[k]
dict(d1)
# {'apples': 8, 'bananas': 32, 'oranges': 18, 'pears': 10}
答案 2 :(得分:0)
这是一只熊猫大班轮:
import pandas as pd
pd.merge(pd.DataFrame(d1,[0]),pd.DataFrame(d2,[0]), 'outer').fillna(1).astype(int).groupby(np.arange(len(df))//2).cumprod().drop(0).to_dict(orient='records')[0]
# {'apples': 8, 'oranges': 18, 'bananas': 32, 'pears': 10}