社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

CDA数据分析师 • 3 年前 • 538 次点击  

作者:费弗里

来源:Python大数据分析


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

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

DeepDiff(obj1, obj2)

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

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

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

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

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






 

点这里👇关注我,记得标星哦~



推荐阅读


 

CDA课程咨询

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/138619
 
538 次点击