python 递归比较两个dict或json(相等,包含)
来源:互联网 发布:mac虚拟机免费版下载 编辑:程序博客网 时间:2024/05/29 19:26
使用python经常会遇到对比dict和json相等问题。
1 比较两个json相等或包含:
先将json转换dict。然后进行比较。
转换的的方法:http://blog.csdn.net/qq_37023538/article/details/53693222
2 python递归对比两个dict的代码:
def cmp_dict(src_data,dst_data): assert type(src_data) == type(dst_data),"type: '{}' != '{}'".format(type(src_data), type(dst_data)) if isinstance(src_data,dict): assert len(src_data) == len(dst_data),"dict len: '{}' != '{}'".format(len(src_data), len(dst_data)) for key in src_data: assert dst_data.has_key(key) cmp_dict(src_data[key],dst_data[key]) elif isinstance(src_data,list): assert len(src_data) == len(dst_data),"list len: '{}' != '{}'".format(len(src_data), len(dst_data)) for src_list, dst_list in zip(sorted(src_data), sorted(dst_data)): cmp_dict(src_list, dst_list) else: assert src_data == dst_data,"value '{}' != '{}'".format(src_data, dst_data)if __name__ == "__main__": xx = {"111":None,"23456":{"22222":9999,"33333":"0000","list":["3333","4444","111"]}} yy = {"111":None,"23456":{"22222":9999,"33333":"0000","list":["111","3333","4444"]}} cmp_dict(xx,yy)由于json,dict中可能包含list结果,所以要处理list。
3 dst_data包含src_data:
上面的代码去掉数据元素个数相等比较就可以了。
def cmp_dict(src_data,dst_data): assert type(src_data) == type(dst_data),"type: '{}' != '{}'".format(type(src_data), type(dst_data)) if isinstance(src_data,dict): for key in src_data: assert dst_data.has_key(key) cmp_dict(src_data[key],dst_data[key]) elif isinstance(src_data,list): for src_list, dst_list in zip(sorted(src_data), sorted(dst_data)): cmp_dict(src_list, dst_list) else: assert src_data == dst_data,"value '{}' != '{}'".format(src_data, dst_data)if __name__ == "__main__": xx = {"111":None,"23456":{"22222":9999,"33333":"0000","list":["3333","4444","111"]}} yy = {"111":None,"23456":{"22222":9999,"33333":"0000","list":["111","3333","4444"]}} cmp_dict(xx,yy)
0 0
- python 递归比较两个dict或json(相等,包含)
- 判断 python dict 相等
- 怎么比较两个json字符串完全相等
- 比较两个Json对象是否相等
- 比较两个JSON字符串是否完全相等
- Gson:比较两个JSON字符串是否完全相等
- 比较两个json是否相等,忽略数组内元素顺序
- JS中如何比较两个Json对象是否相等
- 比较两个对象相等
- PYTHON将list或/dict对象写入txt/json文件
- Python 中两个字典(dict)合并
- Python 中两个字典(dict)合并
- python中两个字典(dict)合并
- Python日常-两个字典(dict)合并
- Python 中两个字典(dict)合并
- Python 中两个字典(dict)合并
- Python 中两个字典(dict)合并
- json dict python base64
- python 3 网络爬取图片之二
- C# 中计算第几周的几种方法
- 使用 Python 实现鼠标键盘自动化
- spring源代码解析收藏
- delphi Controls Components 属性
- python 递归比较两个dict或json(相等,包含)
- POI实现EXCEL单元格合并及边框样式
- Objective-c - block作为方法的参数
- webSocket获取httpSession
- vue1x、vue-router 0.7x 迁移到 vue2 vue-router2 vueX的坑
- JS阻止事件冒泡
- 我对BPNN的一些浅见
- 吐个槽 Spring Data Elasticsearch 3.0M1还不支持Elasticsearch 5.X
- VMWare安装黑苹果