首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >两个字典(键和值)的递归比较?

两个字典(键和值)的递归比较?
EN

Stack Overflow用户
提问于 2011-05-06 04:32:23
回答 8查看 40.1K关注 0票数 40

所以我有一个python字典,称为d1,稍后还有一个版本,称为d1。我想找出d1d2之间的所有变化。换句话说,所有添加、删除或更改的内容。棘手的一点是,值可以是it、string、list或dict,因此它需要是递归的。这就是我到目前为止所知道的:

代码语言:javascript
复制
def dd(d1, d2, ctx=""):
    print "Changes in " + ctx
    for k in d1:
        if k not in d2:
            print k + " removed from d2"
    for k in d2:
        if k not in d1:
            print k + " added in d2"
            continue
        if d2[k] != d1[k]:
            if type(d2[k]) not in (dict, list):
                print k + " changed in d2 to " + str(d2[k])
            else:
                if type(d1[k]) != type(d2[k]):
                    print k + " changed to " + str(d2[k])
                    continue
                else:
                    if type(d2[k]) == dict:
                        dd(d1[k], d2[k], k)
                        continue
    print "Done with changes in " + ctx
    return

它工作得很好,除非值是一个列表。我想不出一个优雅的方法来处理列表,除非在if(type(d2) == list)之后重复这个函数的一个巨大的、略微变化的版本。

有什么想法吗?

编辑:这不同于this post,因为键可以改变

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

https://stackoverflow.com/questions/5903720

复制
相关文章

相似问题

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