gpt4 book ai didi

python - 比较嵌套字典

转载 作者:行者123 更新时间:2023-11-28 22:17:05 24 4
gpt4 key购买 nike

我想比较嵌套字典如下:

d = {'siteA': {'00000000': 3, '11111111': 4, '22222222': 5},
'siteB': {'00000000': 1, '11111111': 2, '22222222': 5}}

e = {'siteA': {'00000000': 5}}

f = {'siteB': {'33333333': 10}}

g = {'siteC': {'00000000': 8}}

d 是将用于与 efg 进行比较的完整字典总数。

如果 e 碰巧在 siteA-00000000 中找到,那么我希望两个值(在本例中为 3 和 5)加起来变成 8。

如果未找到 f(在本例中为 true),我想将字典附加到 d['siteB'] 中。

如果 g 没有找到,想追加到 d 中。

谢谢!

最佳答案

collections.Counter对于字典中的值求和和在不存在的地方添加键很有用。由于 Counterdict 的子类,这应该不会破坏其他操作。除了一次性转换成本外,它非常高效,并且专为此类任务而设计。

from collections import Counter

# convert d to dictionary of Counter objects
d = {k: Counter(v) for k, v in d.items()}

# add items from e
for k, v in e.items():
if k in d:
d[k] += Counter(e[k])

# add item from f if not found
for k, v in f.items():
if k not in d:
d[k] += Counter(f[k])

# add item from g if not found
for k, v in g.items():
if k not in d:
d[k] = Counter(v)

结果:

print(d)

{'siteA': Counter({'00000000': 8, '11111111': 4, '22222222': 5}),
'siteB': Counter({'00000000': 1, '11111111': 2, '22222222': 5}),
'siteC': Counter({'00000000': 8})}

关于python - 比较嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51629691/

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