【发布时间】:2020-12-09 08:26:12
【问题描述】:
我有两个结构相同但值不同的字典。 我用其他一些代码生成它们,然后使用pickle保存到文件中。 每个字典看起来像这样:
old_damage=
{"['1000']": {'13': '1.00E+00', '5': '1.00E+00', ...,
"['1001']": {'13': '1.00E+00', '5': '1.00E+00', ...}
我的意图是取消腌制它们并逐个键对值求和。例如,如果我想将上面的字典与自身相加,我想得到如下结果:
accumulated_damage=
{"['1000']": {'13': '2.00E+00', '5': '2.00E+00', ...,
"['1001']": {'13': '2.00E+00', '5': '2.00E+00', ...}
我做了以下尝试:
accumulated_damage = {}
accumulated_damage.update(old_damage)
accumulated_damage.update(current_damage)
for i in old_damage.keys():
for j in old_damage[i].keys():
try:
addition = float(current_damage[i][j])+float(old_damage[i][j])
accumulated_damage[i][j]=addition
except KeyError:
continue
不幸的是,这为第一个字典键 ['1000'] 提供了正确的结果,但后续键的结果不正确。 (current_damage 字典被覆盖,这会影响总和,例如,字典键 ['1001'] 的值为 3 而不是 2)
我该如何解决这个问题? 谢谢。
【问题讨论】:
标签: python dictionary sum pickle