如何将一个字典中的元素添加到另一个字典中?Python
我有一个主要的字典。
mainDict = {'count': 10, 'a': {'abc': {'additional': 0, 'missing': 0, 'changed': 0}}}
现在我有一个新的字典,这个字典的键和主要字典是一样的,我们把这个字典叫做 b
,但是它的值不同。
b = {'count': 20, 'a': {'abc': {'additional': 10, 'missing': 10, 'changed': 10}}}
我想更新主要字典中键的值(也就是进行加法操作),所以我这样做……
mainDict = {'count': mainDict['count'] + b['count'], 'a': }
我在更新 key a
的值时遇到了困难。如果我使用 mainDict.update(b),那么它会替换掉之前的值。有没有什么有效的解决办法?
我需要的最终输出是:
mainDict = {'count': 30, 'a': {'abc': {'additional': 10, 'missing': 10, 'changed': 10}}}
谢谢
2 个回答
1
我会这样写:
def sum_dicts_recursive(d1, d2):
for k, v1 in d1.items():
if isinstance(v1, dict):
yield (k, dict(process(v1, d2[k])))
else:
yield (k, v1 + d2[k])
result = dict(sum_dicts_recursive(mainDict, b))
# {'count': 30, 'a': {'abc': {'changed': 10, 'additional': 10, 'missing': 10}}}
注意,sum_dicts_recursive
其实可以用一行代码来写成一个生成器表达式,但那样可能会更难理解。
3
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如说,当你在写代码时,可能会发现某个功能没有按预期工作。这时候,我们就需要去查找原因,看看是不是哪里出错了。
通常,大家会在网上寻找解决方案,比如在StackOverflow这样的论坛上提问或者搜索。这里有很多经验丰富的程序员,他们会分享自己的解决办法和经验。
在提问时,记得把你的问题描述清楚,包括你使用的工具、遇到的错误信息,以及你尝试过的解决方法。这样其他人才能更好地理解你的问题,并给出有效的建议。
总之,遇到问题不要慌,积极寻求帮助,很多时候你并不是一个人在战斗。
def recursive_dict_sum_helper(v1, v2):
# "add" two values: if they can be added with '+', then do so,
# otherwise expect dictionaries and treat them appropriately.
try: return v1 + v2
except: return recursive_dict_sum(v1, v2)
def recursive_dict_sum(d1, d2):
# Recursively produce the new key-value pair for each
# original key-value pair, and make a dict with the results.
return dict(
(k, recursive_dict_sum_helper(v, d2[k]))
for (k, v) in d1.items()
)
mainDict = recursive_dict_sum(mainDict, b)