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)

    输出为

    班级优化
    李四
  • 相关阅读:
    Angular2新人常犯的5个错误
    好爱情,坏爱情
    关于css中a标签的样式
    移动端rem布局实践
    我们这一代人的困惑
    原创ui.router源码解析
    Web客户端数据存储学习笔记——Cookie
    喝汤了——如何用一年时间获得十年的能力和经验
    Petya勒索木马
    推荐几个精致的web UI框架
  • 原文地址:https://www.cnblogs.com/guanhuohuo/p/12533635.html
Copyright © 2011-2022 走看看