随笔 - 227  文章 - 0 评论 - 34 阅读 - 64万

遇到个问题:

如果list中是dic,sort会报错,解决办法:sorted(a,key=lambda x:x["x"])

复制代码
def compare_data(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
                """递归"""
                compare_data(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)))
            compare_flag = 0
        sort_key = ''
        for key in src_data[0]:
            sort_key = key
        for src_list, dst_list in zip(sorted(src_data,key=lambda x:x["%s" % sort_key]), sorted(dst_data,key=lambda x:x["%s" % sort_key])):
            """递归"""
            compare_data(src_list, dst_list)
    else:
        if str(src_data) != str(dst_data):
            print("%s != %s, 比对失败" % (src_data, dst_data))
复制代码

参考:

https://blog.csdn.net/zyk123zrx/article/details/83055947

https://zhidao.baidu.com/question/494397854859559132.html

 

-------------------------------------------------------------------------------------------------------------------------------------

找到个现成的模块,可不用重复造轮子:https://blog.csdn.net/qq_27884799/article/details/93904318

pip install jsoncomparedeep

from json_compare import Jcompare
cp = Jcompare()
a = {"k1":"v1","k2":["v1", "v3"]}
b = {"k1":"v1","k2":["v4", "v1"]}
print(cp.compare(a, b))

-------------------------------------------------------------------------------------------------------------------------------------

posted on   蛋尼  阅读(327)  评论(0编辑  收藏  举报
编辑推荐:
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
· .NET 依赖注入中的 Captive Dependency
· .NET Core 对象分配(Alloc)底层原理浅谈
阅读排行:
· 开箱你的 AI 语音女友「GitHub 热点速览」
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(二):用.NET IoT库
· 几个自学项目的通病,别因为它们浪费了时间!
· C#钩子(Hook) 捕获键盘鼠标所有事件 - 5分钟没有操作,自动关闭 Form 窗体
· 特斯拉CEO埃隆.马斯克的五步工作法,怎么提高工程效率加速产品开发?
点击右上角即可分享
微信分享提示