|
本帖最后由 cdbclx 于 2017-7-22 14:30 编辑
没想到什么好的思路,主要是json数据是键值类数据,是类字典的,存放的时候是无序的。另外用你提供的数据做json数据,loads的时候报错,就没用,就简单的写了两个字典,思路就是用先遍历其中一个字典,如果字典的键在另外一个字典存在,如果字典的值为字典的时候,就递归调用比较函数,否则直接比较值,相等则一样,不等则打印。 如果字典的键在另外一个字典中不存在,则直接打印该字典中存在该键,另外一个不存在。
然后再反向的来一遍,区别就是只打印本字典存在键,另外一个字典不存在的该键的,因为键存在的,已经在上面比较过了
#!/usr/bin/env python2.7
#_*_coding:utf-8_*_
import json
def comp1(a,b,m,n,f=0):
for i in a:
if i in b:
if a==b:
pass
else:
if isinstance(a,dict) and isinstance(b,dict):
m=m+"的键%s"%i
n=n+"的键%s"%i
comp1(a,b,m,n,f)
else:
if f==0:
print "%s中的键%s的值为%s"%(m,i,a)
print "%s中的键%s的值为%s"%(n,i,b)
else:
print "%s中有%s"%(m,str(i))
aa={"1":"2","3":"5","5":{'3':'6'}}
bb={"1":"3","5":{'3':'7'}}
comp1(aa,bb,"aa","bb",f=0)
comp1(bb,aa,"bb","aa",f=1)
执行结果如下:
aa中的键1的值为2
bb中的键1的值为3
aa中有3
aa的键5中的键3的值为6
bb的键5中的键3的值为7
想不出什么好思路,希望大侠能给一个好的思路,学习学习 |
|