乐趣区

关于python:深度比较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': [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 后,小数点后第二位当前的差别便被疏忽:

最近整顿了几百 G 的 Python 学习材料,蕴含新手入门电子书、教程、源码等等,收费分享给大家!想要的返回“Python 编程学习圈 ”,发送“J”即可收费取得

退出移动版