Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将一个字典中的元素添加到另一个字典中?python_Python_Dictionary - Fatal编程技术网

如何将一个字典中的元素添加到另一个字典中?python

如何将一个字典中的元素添加到另一个字典中?python,python,dictionary,Python,Dictionary,我有一本主词典 mainDict = {'count': 10, 'a': {'abc': {'additional': 0, 'missing': 0, 'changed': 0}}} 现在我有了一个新的字典,它的键与mainDict中的键相同,称为b,它的值不同 b = {'count': 20, 'a': {'abc': {'additional': 10, 'missing': 10, 'changed': 10}}} 我想更新(加法操作)主字典中键的值,所以我这样做了 mainDi

我有一本主词典

mainDict = {'count': 10, 'a': {'abc': {'additional': 0, 'missing': 0, 'changed': 0}}}
现在我有了一个新的字典,它的键与mainDict中的键相同,称为
b
,它的值不同

b = {'count': 20, 'a': {'abc': {'additional': 10, 'missing': 10, 'changed': 10}}}
我想更新(加法操作)主字典中键的值,所以我这样做了

mainDict = {'count': mainDict['count'] + b['count'], 'a': }
我一直在更新
键a的值
。如果我使用mainDict.update(b),那么它将替换以前的值。任何有效的解决方案

所需的最终输出为:

mainDict = {'count': 30, 'a': {'abc': {'additional': 10, 'missing': 10, 'changed': 10}}}
谢谢

我要写:

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\u dicts\u recursive
可以作为一个单行生成器表达式编写,但这可能更难理解。

我要写:

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\u dicts\u recursive
可以作为一个单行生成器表达式编写,但这可能更难理解。

因此
b
mainDict
具有相同的结构,您希望递归地匹配值并求和它们?因此
b
mainDict
具有相同的结构,你想递归地匹配值并求和吗?非常感谢它工作得很好:)我希望我能像你一样精通Python:(非常感谢它工作得很好:)我希望我能像你一样精通Python:(