关键词搜索

源码搜索 ×
×

Python比较2个json数据是否相等

发布2021-09-23浏览2729次

详情内容

辅助视频教程:​​​​​​Python基础教程|xin3721自学网ul li id=itemtitlePython3 从入门到精通视频教程/li /ul ul li class=description Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),icon-default.png?t=L892https://www.xin3721.com/eschool/pythonxin3721/

1、json数据转换成字典

dict1 = json.load(load_f1)
dict2 = json.load(load_f2)

2、将两个字典按key排好序,然后使用zip()函数将两个字典对应的key打包成元组。比较对应的key的value是否相等。

for src_list, dst_list in zip(sorted(dict1), sorted(dict2)):
    if str(dict1[src_list]) != str(dict2[dst_list]):
        print(src_list,dict1[src_list],dst_list,dict2[dst_list])

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组。

如果数据格式为:

dict1 = {"id": "100", "name": "苹果", "info": {"uid":"https://cdn.jxasp.com:9143/image/2020","phoneName":["一代","苹果12"]}}
dict2 = {"id": "100", "name": "华为", "info": {"uid":"https://cdn.jxasp.com:9143/image/2020","phoneName":["一代","Mate40"]}}

使用递归函数进行处理

复制代码

def cmp(src_data, dst_data):
    if isinstance(src_data, dict):
        """若为dict格式"""
        for key in dst_data:
            if key not in src_data:
                print("src不存在这个key")
        for key in src_data:
            if key in dst_data:
                """递归"""
                cmp(src_data[key], dst_data[key])
            else:
                print("dst不存在这个key")
    elif isinstance(src_data, list):
        """若为list格式"""
        if len(src_data) != len(dst_data):
            print("list len: '{}' != '{}'".format(len(src_data), len(dst_data)))
        for src_list, dst_list in zip(sorted(src_data), sorted(dst_data)):
            """递归"""
            cmp(src_list, dst_list)
    else:
        if str(src_data) != str(dst_data):
            print(src_data)

dict1 = {"id": "100", "name": "苹果", "info": {"uid": "https://cdn.jxasp.com:9143/image/2020", "phoneName": ["一代", "苹果12"]}}
dict2 = {"id": "100", "name": "华为", "info": {"uid": "https://cdn.jxasp.com:9143/image/2020", "phoneName": ["一代", "Mate40"]}}
cmp(dict1, dict2)

复制代码

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载