首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并两个高度嵌套的python字典

合并两个高度嵌套的python字典
EN

Stack Overflow用户
提问于 2014-09-25 15:54:00
回答 2查看 55关注 0票数 0
代码语言:javascript
复制
 {255:
     {255:
         {1:
            {2:{}
            }
         }
     }
 },
 {255:
     {255:
         {2:
           {3:{}
           }
         }
     }
 }

我的字典非常复杂(比上面显示的词条还要多)

现在我想合并两个字典

输出应为:

代码语言:javascript
复制
 {255:
     {255:
         {1:
            {2:{}
            }
         },
        {2:
           {3:{}
        }
     }
 }

此外,最大嵌套可能是到5级。

EN

回答 2

Stack Overflow用户

发布于 2014-09-25 16:06:44

不知道我是否理解了,但是这样如何:

代码语言:javascript
复制
def merge(a, b):
    for x in b:
        if x in a:
            merge(a[x], b[x])
        else:
            a[x] = b[x]
    return a
票数 2
EN

Stack Overflow用户

发布于 2014-09-25 16:24:46

下面是对格奥尔格答案的一个简单变体,它不会影响任何一个参数值(它返回新字典中数据的副本,而不是重用现有字典):

代码语言:javascript
复制
import copy

def merge(a, b, copy_a=True):
    if copy_a:
        a = copy.deepcopy(a)
    for x in b:
        if x in a:
            merge(a[x], b[x], copy_a=False)
        else:
            a[x] = copy.deepcopy(b[x])
    return a

额外的参数用于使代码在第一次调用时复制第一个字典,而不是在任何递归调用中复制(因为那时它们已经被复制了)。这是一个实现细节,当从其他代码调用它时,您将始终使用默认值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26033350

复制
相关文章

相似问题

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