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

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

很多情况下我们需要对两条数据之间的差异进行比较,如果仅仅是针对数值型对象,那么两者的差值就是所谓的差异,但是如果要比较两条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)

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

图片

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

图片

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

图片

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

图片

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

图片

责任编辑:赵宁宁 来源: Python大数据分析
相关推荐

2017-07-11 16:19:50

大数据Kafka消息队列

2018-08-15 12:43:52

iOSAndroid设计差异

2023-05-23 07:06:05

PythonPowerShell

2017-08-01 14:51:45

人工智能大数据深度学习

2022-01-17 10:50:15

Python代码内存

2020-08-31 08:25:06

Python时间模块开发

2010-03-10 19:46:07

Python编程语言

2020-07-27 08:24:42

编程语言C语言Java

2009-06-09 21:46:18

JavaScript差IEFirefox

2013-12-09 09:25:25

VMware vSAN

2021-07-14 10:58:47

SIMeSIMiSIM

2014-09-11 17:02:41

综合布线

2014-05-29 17:03:05

UnixLinux管理员

2013-03-01 10:33:55

VoIPIP可视技术

2020-09-06 09:55:13

git分支命令

2023-01-29 09:18:14

ScrollendJavaScript事件

2022-07-29 09:01:20

Chrome试源代码调试技巧

2010-03-19 10:31:00

网桥与交换机

2023-08-29 15:45:20

单模光纤多模光纤

2020-09-22 12:53:37

JavaScript循环可枚举
点赞
收藏

51CTO技术栈公众号