使用递归比较2个字典:
针对python 3编辑:
d1= {'a':{'b':{'cs':10},'d':{'cs':20}}}d2= {'a':{'b':{'cs':30} ,'d':{'cs':20}},'newa':{'q':{'cs':50}}}def findDiff(d1, d2, path=""): for k in d1: if (k not in d2): 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))print ("comparing d2 to d1:")print (findDiff(d2,d1))python 2代码:
d1= {'a':{'b':{'cs':10},'d':{'cs':20}}}d2= {'a':{'b':{'cs':30} ,'d':{'cs':20}},'newa':{'q':{'cs':50}}}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)print "comparing d2 to d1:"print findDiff(d2,d1)输出:
comparing d1 to d2:a->b : - cs : 10 + cs : 30Nonecomparing d2 to d1:a->b : - cs : 30 + cs : 10a :newa as key not in d2None



