zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    Java中返回参数值的几种状态
    Java中的二维数组
    Java foreach操作(遍历)数组
    Arrays 类操作 Java 的数组排序
    Java循环语句 for
    Java循环语句 while
    Java条件语句 switch case
    Java多重if....else if
    margin优化的一种思路
    5.命名规则
  • 原文地址:https://www.cnblogs.com/ailiailan/p/13921082.html
Copyright © 2011-2022 走看看