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

0 投票
2 回答
553 浏览
提问于 2025-04-17 05:24

我有一个主要的字典。

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)

撰写回答