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


    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":"2020","phoneName":["一代","苹果12"]}}
    dict2 = {"id": "100", "name": "华为", "info": {"uid":"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": "2020", "phoneName": ["一代", "苹果12"]}}
    dict2 = {"id": "100", "name": "华为", "info": {"uid": "2020", "phoneName": ["一代", "Mate40"]}}
    cmp(dict1, dict2)
  • 相关阅读:
    json和pickle模块
    53. 最大子序和
    69. x 的平方根
    leetcode刷题周记【2020.9.21-2020.9.26】
    推荐学习 Java 的地方
    5、SpringBoot:配置文件及自动配置原理
    4、SpringBoot:运行原理探究
    3、SpringBoot:helloworld
    2、SpringBoot:什么是微服务
    1、SpringBoot:什么是SpringBoot
  • 原文地址:https://www.cnblogs.com/ailiailan/p/13921082.html
Copyright © 2020-2023  润新知