首页 > 解决方案 > python比较字典只返回真/假

问题描述

我有 2 部字典,我正在寻找比较它们。我想打印差异总数。

以下程序可以完美地报告所有差异,我应该如何修改它以仅返回总计数。

d1= {'a':{'b':{'cs':10}, 'd':{'cs':20}}}
d2= {'a':{'b':{'cs':30} ,'d':{'cs':20}}}

def findDiff(d1, d2, path=""):
    for k in d1.keys():
        if not d2.has_key(k):
            print path, ":"
            print k + " as key not in d2", "\n"
        else:
            if type(d1[k]) is dict:
                if path == "":
                    path = k
                else:
                    path = path + "->" + k
                findDiff(d1[k],d2[k], path)
            else:
                if d1[k] != d2[k]:
                    print path, ":"
                    print " - ", k," : ", d1[k]
                    print " + ", k," : ", d2[k] 

print "comparing d1 to d2:"
print findDiff(d1,d2)

电流输出:

comparing d1 to d2:
a->b :
 -  cs  :  10
 +  cs  :  30
None

预期输出:

comparing d1 to d2:
no of differences: 1

标签: pythondictionaryrecursion

解决方案


推荐阅读