zoukankan      html  css  js  c++  java
  • 【python】比较两个json并返回差别

    现在要比较两个json是否相等,若不同则返回差别

    比如下面dict数据的对比:

    dict1 = {"id": "50356270565167104", "name": "班级优化"}
    dict2 = {"id": "50356270565167104", "name": "班级优化2"}

    对比两个dict是否相等

    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])

    输出为

    name 班级优化 name 班级优化2

    如果数据格式为

    dict1 = {"id": "503", "name": "班级优化", "info": {"uid":"2017","stuName":["张三","李四"]}}
    dict2 = {"id": "503", "name": "班级优化2", "info": {"uid":"2017","stuName":["张三","赵五"]}}

    此时需要使用递归函数进行处理

    首先看一个简单的递归函数

    def fact(n):
        if n==1:
            return 1
        else:
            return n*fact(n-1)

    对比这两个dict:

    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:
                    thiskey = key
                    """递归"""
                    cmp(src_data[key], dst_data[key])
                else:
                    dic[key] = ["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)

    输出为

    班级优化
    李四
  • 相关阅读:
    上海汉得面试:
    二叉树的遍历
    操作系统知识总结
    mysql单表查询&&多表查询(职员表14+9)
    数据库查询
    数据库设计三大范式及事务
    某硕笔试题mysql数据库部分(较为全面)
    java 读取excel 将数据插入到数据库
    java 读取excel 正常 xls
    java 读取excel(Map结构)xls
  • 原文地址:https://www.cnblogs.com/guanhuohuo/p/12533635.html
Copyright © 2011-2022 走看看