首页 > 后端开发 > Python教程 > 如何在 Python 中执行嵌套字典的深度合并?

如何在 Python 中执行嵌套字典的深度合并?

DDD
发布: 2024-12-04 02:03:10
原创
933 人浏览过

How to Perform a Deep Merge of Nested Dictionaries in Python?

Python 中字典的字典的深度合并

使用嵌套键合并多个字典可能是一项具有挑战性的任务。让我们考虑以下示例:

dict1 = {
    1: {"a": {"A"}},
    2: {"b": {"B"}}
}

dict2 = {
    2: {"c": {"C"}},
    3: {"d": {"D"}}
}
登录后复制

所需的输出是:

dict3 = {
    1: {"a": {"A"}},
    2: {"b": {"B"}, "c": {"C"}},
    3: {"d": {"D"}}
}
登录后复制

为了实现这种深度合并,我们可以利用递归函数:

def merge(a: dict, b: dict, path=[]):
    for key in b:
        if key in a:
            if isinstance(a[key], dict) and isinstance(b[key], dict):
                merge(a[key], b[key], path + [str(key)])
            else:
                a[key] = b[key]
        else:
            a[key] = b[key]

    return a
登录后复制

此函数采用两个字典,a 和 b,以及一个跟踪嵌套结构中当前位置的路径。它遍历 b 中的键并检查 a 中是否存在相应的键。如果该键处的值都是字典,则它递归地调用合并函数来合并这些子字典。否则,它会使用 b 中的值更新 a 中的值。

对于上面的示例字典,合并函数将产生所需的结果:

print(merge(dict1, dict2))
登录后复制

输出将为:

{
    1: {'a': {'A'}},
    2: {'b': {'B'}, 'c': {'C'}},
    3: {'d': {'D'}}
}
登录后复制

注意:此函数会改变第一个字典 a。如果您想保留其内容,可以在合并之前复制一份,例如 merge(dict(a), b)。

以上是如何在 Python 中执行嵌套字典的深度合并?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板