计算对象之间的深度差异
pydeepdiff的Python项目详细描述
pydeepdiff
==
'rhs''rhs'''rhs':值}
''lhs'''lhs'''lhs''''lhs'''lhs''lhs'''lhs':值}
-Edition:{''path''path''path''u to_对象,'kin''''''''''''lhs':值,'rhs''s''rhs'''rhs''rhs''rhs''rhs''rhs''rhs''rhs''rhs''s':值}<<<<<<
's''s''s''s':值}<<<<<<<<<<<<<<
's's'kind':'D','lhs_idx':索引,'lhs':值}
-移动{'path':{'path':path~u-object,'kind':'m,'lhs'u idx':index,'rhs'u idx':index}
>这个lib需要python 3.2+
```````
>pip install pydeepdeepdiff
``````
>
``python
>
>
dict_a={'field_1':'id1',“字段2”:“vala1”}
dict_b={field_1':“id3”,“field_2':“valb1”}
differences=get_diff(dict_a,dict_b)
'kind':'e',
'lhs':'id1',
'rhs':'id3'
},
{
'path':[
'field\u 2'
],
'kind':'e',
'lhs':'vala1',
'rhs':'valb1'
>
dict'a={'id''1''dict''id''1''''bloc':{'act':'1'}
dict'b={'id':'1'''dict''''''bloc':{'act':'2'}
differ=get'u diff(dict'a,dict'a'dict'1''':'2'}
differs=get'get'u diff(diff(dict'a,dict'a,dict'a,/>{
'路径':[
'整体',
'动作'
],
'种类':'e',
'左侧':'1',
'rhs':'2'
}
]
````
忽略的字段
比较对象时可以忽略某些字段。
将这些字段的列表传递给比较函数。
>例如:不要比较嵌套“bloc”对象的字段“act”字段“act”字段:
dict a={'id''1''dict''id''1''bloc':{'act':'1'}
dict b={'id''1'''dict':{'bloc':{'act':'1'}
diff=get-diff(dict a,dict b,dict'b,dict'b,'dict'a,dict'act'act'act'act'1':'1'}
<根',{},['root.bloc.act'])
```
在本例中,结果是一个空白的差异列表。
它表示它的ID,我们希望使用它。
在PydepDiff中,这种情况通过映射文件解决。
=[{'field'u 1':'id3''id3'''id3'''field'2':'valb1'},{'field'u 1':'id1'''''field'2':'valb2'}]
mapping=[{'path':'''id':'field'u 1'}]
``````
映射由一个列表表示,字段‘id''field'field 1'}]
对象的。每个对象都有一个:
*一个“path”字段,其中包含对象的json路径
*一个“id”字段,其中包含表示对象id的字段的名称(由“path”指向)
他空字符串
>结果是以下差异列表:
`````
[
>
{{'path'u-to'u-object':'''path'u-to'u-object':'''filter':''rhs'u-idx''1,'lhs'u-idx''0,'kind':'M'},
{{'rhs':'valb2,'lhs'vala1,'lhs'u-idx'idx'0,'kind':'M'},'br/>{'rhs':'valb2,'valb2,'lhs''lhs':'vala1,'vala1 uidx:1,“种类”:“D”,“lhs”:{字段2':'vala2','字段1':'id2'},'到对象的路径':'','筛选器':'},
{rhs'uidx':0,'种类':'n,'rhs':{字段2':'valb1,'字段1':'id3'},'到对象的路径':','筛选器':'}
]
`````
只需从项目主目录运行此命令(您将需要安装py.test)
````
py.test test
```
==
'rhs''rhs'''rhs':值}
''lhs'''lhs'''lhs''''lhs'''lhs''lhs'''lhs':值}
-Edition:{''path''path''path''u to_对象,'kin''''''''''''lhs':值,'rhs''s''rhs'''rhs''rhs''rhs''rhs''rhs''rhs''rhs''rhs''s':值}<<<<<<
's''s''s''s':值}<<<<<<<<<<<<<<
's's'kind':'D','lhs_idx':索引,'lhs':值}
-移动{'path':{'path':path~u-object,'kind':'m,'lhs'u idx':index,'rhs'u idx':index}
>这个lib需要python 3.2+
```````
>pip install pydeepdeepdiff
``````
>
``python
>
>
dict_a={'field_1':'id1',“字段2”:“vala1”}
dict_b={field_1':“id3”,“field_2':“valb1”}
differences=get_diff(dict_a,dict_b)
'kind':'e',
'lhs':'id1',
'rhs':'id3'
},
{
'path':[
'field\u 2'
],
'kind':'e',
'lhs':'vala1',
'rhs':'valb1'
>
dict'a={'id''1''dict''id''1''''bloc':{'act':'1'}
dict'b={'id':'1'''dict''''''bloc':{'act':'2'}
differ=get'u diff(dict'a,dict'a'dict'1''':'2'}
differs=get'get'u diff(diff(dict'a,dict'a,dict'a,/>{
'路径':[
'整体',
'动作'
],
'种类':'e',
'左侧':'1',
'rhs':'2'
}
]
````
忽略的字段
比较对象时可以忽略某些字段。
将这些字段的列表传递给比较函数。
>例如:不要比较嵌套“bloc”对象的字段“act”字段“act”字段:
dict a={'id''1''dict''id''1''bloc':{'act':'1'}
dict b={'id''1'''dict':{'bloc':{'act':'1'}
diff=get-diff(dict a,dict b,dict'b,dict'b,'dict'a,dict'act'act'act'act'1':'1'}
<根',{},['root.bloc.act'])
```
在本例中,结果是一个空白的差异列表。
它表示它的ID,我们希望使用它。
在PydepDiff中,这种情况通过映射文件解决。
=[{'field'u 1':'id3''id3'''id3'''field'2':'valb1'},{'field'u 1':'id1'''''field'2':'valb2'}]
mapping=[{'path':'''id':'field'u 1'}]
``````
映射由一个列表表示,字段‘id''field'field 1'}]
对象的。每个对象都有一个:
*一个“path”字段,其中包含对象的json路径
*一个“id”字段,其中包含表示对象id的字段的名称(由“path”指向)
他空字符串
>结果是以下差异列表:
`````
[
>
{{'path'u-to'u-object':'''path'u-to'u-object':'''filter':''rhs'u-idx''1,'lhs'u-idx''0,'kind':'M'},
{{'rhs':'valb2,'lhs'vala1,'lhs'u-idx'idx'0,'kind':'M'},'br/>{'rhs':'valb2,'valb2,'lhs''lhs':'vala1,'vala1 uidx:1,“种类”:“D”,“lhs”:{字段2':'vala2','字段1':'id2'},'到对象的路径':'','筛选器':'},
{rhs'uidx':0,'种类':'n,'rhs':{字段2':'valb1,'字段1':'id3'},'到对象的路径':','筛选器':'}
]
`````
只需从项目主目录运行此命令(您将需要安装py.test)
````
py.test test
```