gpt4 book ai didi

python - 在字典中组合字典并添加值

转载 作者:行者123 更新时间:2023-11-30 23:31:04 25 4
gpt4 key购买 nike

我正在尝试组合两个字典来产生如下结果:

a = {"cat": 3, "dog": 4, "rabbit": 19, "horse": 3, "shoe": 2}
b = {"cat": 2, "rabbit": 1, "fish": 9, "horse": 5}
ab = {"cat": 5, "dog": 4, "rabbit": 20, "horse": 8, "shoe": 2, "fish": 9}

因此,如果它们具有相同的键,则会添加值,如果一个字典中存在一个键,但另一个不存在,则会将其及其相应的值添加到新字典中。

这两个字典也都嵌套在单独的字典中,以便:

x = {'a': {"cat": 3, "dog": 4, "rabbit": 19, "horse": 3, "shoe": 2}, 'c': blah, 'e': fart}
y = {'a': {"cat": 2, "rabbit": 1, "fish": 9, "horse": 5}, 'c': help, 'e': me}

两个主要词典中的键是相同的。

我一直在尝试将两个字典结合起来:

def newdict(x,y):
merged= [x,y]
newdict = {}
for i in merged:
for k,v in i.items():
new.setdefault(k,[]).append(v)

这给我的是一本字典,其中的值属于列表中的相同键。我不知道如何迭代一个键的两个列表并将这些值添加在一起以创建一个联合字典。谁能帮我吗?

最终结果应该是这样的:

xy = {'a' = {"cat": 5, "dog": 4, "rabbit": 20, "horse": 8, "shoe": 2, "fish": 9}, 'c': blah, 'e': me}

我必须迭代“c”和“e”键,并根据“a”的结果执行不同的计算。

我希望我足够清楚地解释了我的问题。

最佳答案

我的尝试是:

a = {"cat": 3, "dog": 4, "rabbit": 19, "horse": 3, "shoe": 2}
b = {"cat": 2, "rabbit": 1, "fish": 9, "horse": 5}
def newdict(x, y):
ret = {}
for key in x.keys():
if isinstance(x[key], dict):
ret[key] = newdict(x[key], y.get(key, {}))
continue
ret[key] = x[key] + y.get(key, 0)
for key in y.keys():
if isinstance(y[key], dict):
ret[key] = newdict(y[key], x.get(key, {}))
continue
ret[key] = y[key] + x.get(key, 0)
return ret
ab = newdict(a, b)
print ab
> {'horse': 8, 'fish': 9, 'dog': 4, 'cat': 5, 'shoe': 2, 'rabbit': 20}

说明:

newdict函数首先迭代第一个字典 (x)。对于 x 中的每个键,它在新字典中创建一个新条目,并将值设置为 x[key] 的总和。和y[key]dict.get函数提供一个可选的第二个参数,当 key 时返回该参数。不在 dict 中.

如果x[key]是一个字典,它设置 ret[key]x[key] 的合并字典和y[key] .

然后对 y 执行相同的操作并返回。

注意:这不适用于函数。尝试自己解决一些问题。

关于python - 在字典中组合字典并添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20177653/

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