自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

超實用!深度比較Python對象之間的差異

開發(fā)
很多情況下我們需要對兩條數(shù)據(jù)之間的差異進行比較,如果僅僅是針對數(shù)值型對象,那么兩者的差值就是所謂的差異,但是如果要比較兩條JSON數(shù)據(jù)間的差異呢?

很多情況下我們需要對兩條數(shù)據(jù)之間的差異進行比較,如果僅僅是針對數(shù)值型對象,那么兩者的差值就是所謂的差異,但是如果要比較兩條JSON數(shù)據(jù)間的差異呢?

由于JSON數(shù)據(jù)具有可嵌套可分層的特點,想要明確找出兩條JSON數(shù)據(jù)間的差異并加以描述,如果自己書寫方法還是有些費事。這種情況我們就可以使用到第三方庫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)

可以看到打印的檢測結果中具體聲明了差異內容及具體位置,可以幫助我們開展后續(xù)其他處理。

圖片

除此之外,deepdiff還具有非常豐富的額外功能,譬如忽略對指定類型數(shù)據(jù)的比較檢查:

圖片

亦或是通過定義層次規(guī)則,令DeepDiff()跳過對指定位置元素的差異檢查:

圖片

還支持利用正則表達式定義要忽略的模糊層次規(guī)則,譬如下面的例子中我們使用正則批量忽略了多個鍵值對:

圖片

限制針對浮點數(shù)的檢查精度,譬如下面的例子中限定significant_digits=2后,小數(shù)點后第二位以后的差異便被忽略:

? 圖片 ?

責任編輯:趙寧寧 來源: Python大數(shù)據(jù)分析
相關推薦

2017-07-11 16:19:50

大數(shù)據(jù)Kafka消息隊列

2018-08-15 12:43:52

iOSAndroid設計差異

2023-05-23 07:06:05

PythonPowerShell

2022-01-17 10:50:15

Python代碼內存

2017-08-01 14:51:45

人工智能大數(shù)據(jù)深度學習

2020-08-31 08:25:06

Python時間模塊開發(fā)

2010-03-10 19:46:07

Python編程語言

2020-07-27 08:24:42

編程語言C語言Java

2025-03-04 10:49:51

2009-06-09 21:46:18

JavaScript差IEFirefox

2013-12-09 09:25:25

VMware vSAN

2021-07-14 10:58:47

SIMeSIMiSIM

2014-05-29 17:03:05

UnixLinux管理員

2014-09-11 17:02:41

綜合布線

2023-01-29 09:18:14

ScrollendJavaScript事件

2022-07-29 09:01:20

Chrome試源代碼調試技巧

2020-09-06 09:55:13

git分支命令

2013-03-01 10:33:55

VoIPIP可視技術

2024-02-23 18:17:57

Python腳本開發(fā)

2024-02-01 18:06:04

Python編程系統(tǒng)
點贊
收藏

51CTO技術棧公眾號