gpt4 book ai didi

python - 在Python中合并两个字典,以便添加/减去它们的键

转载 作者:行者123 更新时间:2023-11-30 23:05:38 29 4
gpt4 key购买 nike

我有两个字典,来自 sympy.ntheoryfactorint 输出。我需要合并它们,以便公共(public)键的值相加,即 MergedDict[key] = Dict1[key] + Dict2[key],而唯一键保持不变。

此外,我还需要获取一个 merged 字典,其中公共(public)键有所不同,即 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'对象没有属性'items'。上面的代码仅用于总结部分。然而,要对差分部分做任何事情,假设可以更改求和以在公共(public) key 的情况下进行差分。

最佳答案

不确定您的目标是什么,但是 factorint 为您提供了整数的键/值对,因此您应该对这些值求和,您尝试在每个 val 上调用 items来自 dict ,它是一个整数,显然不起作用:

    from sympy.ntheory import factorint
from collections import defaultdict

d=factorint(12)
dd = defaultdict(int)
for key, val in d.items():
dd[key] += val

for n in range(2, 6):
u = factorint(n)
for key, val in u.items():
dd[key] += val

print(dd)

输出:

 defaultdict(<type 'int'>, {2: 5, 3: 2, 5: 1})

factorint 是一个字典,不能有重复的键,因此第一个循环可以使用 update 来完成:

d = factorint(12)
dd = defaultdict(int)
dd.update(d)

for n in range(2, 6):
u = factorint(n)
for key, val in u.items():
dd[key] += val

关于python - 在Python中合并两个字典,以便添加/减去它们的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33064901/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com