超实用!深度比较Python对象之间的差异

2023-10-29

本文完整示例代码及文件已上传至Github仓库https://github.com/CNFeffery/PythonPracticalSkills

很多情况下我们需要对两条数据之间的差异进行比较,如果仅仅是针对数值型对象,那么两者的差值就是所谓的差异,但是如果要比较两条JSON数据间的差异呢?

由于JSON数据具有可嵌套可分层的特点,想要明确找出两条JSON数据间的差异并加以描述,如果自己书写方法还是有些费事。这种情况我们就可以使用到第三方库deepdiff中的DeepDiff()方法,它基于递归对不同对象进行深度比较。

使用pip install deepdiff完成安装之后,通过from deepdiff import DeepDiff导入所需功能,就可以直接对两个JSON对象之间的差异进行比较,下面是一个简单的例子:

from deepdiff import DeepDiff

obj1 = {
    'level1': [
        {
            'level1-1': 1,
            'level1-2': 1,
            'level1-3': [
                {
                    'level1-3-1': [1, 2, 3]
                }
            ]
        }
    ],
    'level2': 'a'
}

obj2 = {
    'level1': [
        {
            'level1-1': 1,
            'level1-2': 1,
            'level1-3': [
                {
                    'level1-3-1': [1, 2, 1]
                }
            ]
        }
    ],
    'level2': 'b'
}

DeepDiff(obj1, obj2)

可以看到打印的检测结果中具体声明了差异内容及具体位置,可以帮助我们开展后续其他处理。

877d32e0c1e0cac59b2f8d811d2c9329.png

除此之外,deepdiff还具有非常丰富的额外功能,譬如忽略对指定类型数据的比较检查:

6cd5116b1705c483dcc66bace24df587.png

亦或是通过定义层次规则,令DeepDiff()跳过对指定位置元素的差异检查:

d33145b56094e879061d960dca995b5b.png

还支持利用正则表达式定义要忽略的模糊层次规则,譬如下面的例子中我们使用正则批量忽略了多个键值对:

580db060c97bce92c739481def60ca4b.png

限制针对浮点数的检查精度,譬如下面的例子中限定significant_digits=2后,小数点后第二位以后的差异便被忽略:

ec7f3872ec6a343e64a251b235bda6ef.png

更多用法,感兴趣的读者朋友可以移步https://zepworks.com/deepdiff/5.8.2/diff.html了解更多。


本期分享结束,咱们下回见~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

超实用!深度比较Python对象之间的差异 的相关文章

随机推荐

  • java开发Demo~微信扫码支付,java开发示例

    开发所需工具类 以上工具类以上传到我的资源 下载地址 http download csdn net download han xiaoxue 10184832 开发所需jar 具体的代码不贴了 说明下PayConfigUtil中的参数 AP
  • CMake详细使用

    1 CMake简介 CMake是一个用于管理源代码的跨平台构建工具 可以方便地根据目标平台和编译工具产生对应的编译文件 主要用于C C 语言的构建 但是也可以用于其它编程语言的源代码 如同使用make命令工具解析Makefile文件一样 c
  • 百度群组链接分享 - 铁人圈子

    百度网盘群组链接分享 铁人圈子 铁人圈子 tierenpan com 是一个分享百度网盘群组的发布平台 可以在铁人圈子上实时分享你的群组链接 并且和其他网友互动交流分享资源 群组分享 百度群组链接分享 地址 https www tieren
  • 58道Vue常见面试题集锦,涵盖入门到精通

    1 vue优点 答 轻量级框架 只关注视图层 是一个构建数据的视图集合 大小只有几十 kb 简单易学 国人开发 中文文档 不存在语言障碍 易于理解和学习 双向数据绑定 保留了 angular 的特点 在数据操作方面更为简单 组件化 保留了
  • vue 项目首页加载速度优化以及解决首页白屏问题

    前言 最近再接手一个vue项目的时候 公司运营部就说首页加载要10秒以上时间 这谁能忍受 老板也说时间太久 技术部老大说之前的同事优化过一次 时间还是这么久 重担就落在我身上了 于是我就开始着手优化 最终的结果呢就是优化到了2秒以内加载出来
  • python中dtype的使用规范_Python numpy.dtype() 使用实例

    The following are code examples for showing how to use They are extracted from open source Python projects You can vote
  • Mybatis执行过程源码解析

    使用Mybatis执行查询sql代码示例 SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder build Resources getResourceAsReade
  • 修改Jenkins以Root用户运行

    简单操作如下 vim etc sysconfig jenkins JENKINS USER root chown R root root var lib jenkins chown R root root var cache jenkins
  • Linux查看文件及文件夹大小

    du sh 查看当前目录下各个文件及目录占用空间大小 du sh 查看当前目录的总大小 df h 查看系统中文件的使用情况 Size 分割区总容量 Used 已使用的大小 Avail 剩下的大小 Use 使用的百分比 Mounted on
  • Uiautomator2

    https github com openatx uiautomator2 官方文档 第一步 先准备一台开启了开发者选项的安卓手机 连接上电脑 确保执行adb devices可以看到连接上的设备 不要开启charles 否则会导致下载失败
  • Window触发器和Delta触发器在大数据处理中的应用

    大数据处理是指处理海量数据的技术和方法 在大数据处理中 窗口触发器 Window Trigger 和Delta触发器 Delta Trigger 是常用的工具 用于按照一定的规则触发数据处理操作 本文将介绍这两种触发器的概念 应用场景 并给
  • 使用java实现http多线程下载

    下载工具我想没有几个人不会用的吧 前段时间比较无聊 花了点时间用java写了个简单的http多线程下载程序 纯粹是无聊才写的 只实现了几个简单的功能 而且也没写界面 今天正好也是一个无聊日 就拿来写篇文章 班门弄斧一下 觉得好给个掌声 不好
  • linux下通过V4L2驱动USB摄像头

    目录 文章目录 目录 前言 v4l2 解析 v4l2 介绍 应用程序通过 V4L2 接口采集视频数据步骤 相关结构体解析 总结 参考链接 前言 在移植罗技C270摄像头到6818的过程中 内核已经检测到了USB摄像头 但是直接用OpenCV
  • /proc/sys/kernel/hung_task_timeout_secs问题

    具体的问题如下 判定是磁盘写入的问题 正在找照成文件卷hung的原因
  • 一维码和二位码主要原理

    1 条码主要分类 Code39码 标准39码 Codabar码 库德巴码 Code25码 标准25码 ITF25码 交叉25码 Matrix25码 矩阵 25码 UPC A码 UPC E码 EAN 13码 EAN 13国际商品条码 EAN
  • EEPROM读写测试实验

    EEPROM是一种用于计算机系统的非易失性存储器 也常在嵌入式领域中作为数据的存储设备 在物联网及可穿戴设备等需要存储少量数据的场景中也有广泛应用 实验任务 本节的实验任务是先向EEPROM AT24C64 的存储器地址0至255分别写入数
  • MongoDB 使用总结

    简介 java系列技术分享 持续更新中 初衷 一起学习 一起进步 坚持不懈 如果文章内容有误与您的想法不一致 欢迎大家在评论区指正 希望这篇文章对你有所帮助 欢迎点赞 收藏 留言 更多文章请点击 文章目录 一 MongoDB简介 二 Mon
  • 臻识科技用全智能相机,把智慧城市的交通/安防/工业制造做到极致

    俨然 智慧城市已经是一个技术密集 资本密集 巨头密集 关注度密集的大热门领域 从技术层面来看 智慧城市对当下热门技术进行了综合 Cloud Big Data AI AR VR 5G IoT Quantum Computing Edge Co
  • 极域课堂管理系统软件V6.0 2016 豪华版

    百度网盘链接地址 https pan baidu com s 1ZXClL84 iFl8klR3Kme5 w 地址链接失效请及时联系本人 QQ 395648542
  • 超实用!深度比较Python对象之间的差异

    本文完整示例代码及文件已上传至Github仓库https github com CNFeffery PythonPracticalSkills 很多情况下我们需要对两条数据之间的差异进行比较 如果仅仅是针对数值型对象 那么两者的差值就是所谓
Powered by Hwhale