如何从深度差异中完全排除"type_changes",因为我只关心值的变化?


from deepdiff import DeepDiff

t1 = {1:1, 2:2, 3:3}
t2 = {1:1, 2:"2", 3:3}
print(DeepDiff(t1, t2), indent=2)

输出:

{ 'type_changes': { 'root[2]': { 'new_type': <class 'str'>,
'new_value': '2',
'old_type': <class 'int'>,
'old_value': 2
}}}

我只想在输出中更改值,并排除"type_changes"。我必须比较嵌套字典,我不在乎类型。

来自DeepDiff的文档:DeepDiff-Docs

ignore_type_in_groups-

忽略类型组成员之间的类型更改。例如,如果您想忽略浮点和小数等之间的类型更改。注意这是一个更细粒度的特性。

因此,在您的情况下,当old_type是整数,new_type是字符串时-

print(DeepDiff(t1, t2), indent=2, ignore_type_in_groups=[(int, str)])

输出为-

{}

另一个可用的选项是将DeepDiff对象转换为Dictionary/JSON,并根据需要进行控制。

dict = DeepDiff(t1, t2).to_dict()

相关内容

  • 没有找到相关文章

最新更新