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()