首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何合并任意深度的多个嵌套字典?

如何合并任意深度的多个嵌套字典?
EN

Stack Overflow用户
提问于 2019-07-19 17:55:52
回答 1查看 93关注 0票数 0

我有一个字典列表,其中一些在第1级和第2级共享相同的键,有些在第1级和第1级共享相同的键,有些没有共享密钥。我想从最高层开始把字典合并在一起。

代码语言:javascript
复制
input = [
d1 = {'a' : {'az' : {'a1': 2}}}
d2 = {'a' : {'az' : {'g' : 9}}}
d3 = {'a' : {'aa' : {'g' : 9}}}
d4 = {'b' : {'az' : {'g' : 9}}}
]

result = [
{'a': {'az' : {'a1' : 2, 'g' : 9}, {'aa' : {'g' : 9}}}
{'b' : {'az' : {'g' : 9}}}
]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-19 18:17:36

最简单的方法是递归合并字典,参见下面的示例。

代码语言:javascript
复制
# https://gist.github.com/angstwad/bf22d1822c38a92ec0a9
def merge(A, B):
    for k, v in B.items():
        if k in A and isinstance(A[k], dict) and isinstance(v, dict):
            merge(A[k], v)
        else:
            A[k] = v

input_dicts = [
    {'a' : {'az' : {'a1': 2}}},
    {'a' : {'az' : {'g' : 9}}},
    {'a' : {'aa' : {'g' : 9}}},
    {'b' : {'az' : {'g' : 9}}}
]

result = {}
for d in input_dicts:
    merge(result, d)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57117518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档