【发布时间】:2015-10-11 20:46:39
【问题描述】:
我有两个字典,从sympy.ntheory 输出factorint。我需要合并它们,以便对公共键的值进行汇总,即MergedDict[key] = Dict1[key] + Dict2[key],而唯一键保持不变。
我还需要得到一个merged 字典,其中的公共键是不同的,即MergedDict[key] = Dict1[key] - Dict2[key]。这里Dict2 键总是Dict1 键的子集,所以没有负数问题。
我已尝试关注this question。但我无法让它工作。到目前为止,我的方法如下:
from sympy.ntheory import factorint
from collections import defaultdict
d=factorint(12)
dd = defaultdict(lambda: defaultdict(int))
for key, values_dict in d.items():
for date, integer in values_dict.items():
dd[key] += integer
for n in range(2,6):
u = factorint(n)
for key, values_dict in u.items():
for date, integer in values_dict.items():
dd[key] += integer
它给出了错误AttributeError: 'int' object has no attribute 'items'。上面的代码仅用于总结部分。然而,在差分部分做任何事情,假设汇总可以更改为在公共键的情况下进行差分。
【问题讨论】:
-
d 是一个
dict对象,由factorint输出,不确定“你为什么期待一个字典?”是什么意思。如果方法有误,请告知。 -
是的 factorint 是一个字典,但存储在字典中的值不是字典。
values_dict在您的代码中是 int 而不是 dict
标签: python dictionary merge