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 文档
忽略组中的类型 -
忽略类型组成员之间的类型更改。例如如果 您想忽略浮点数和小数之间的类型更改等。 注意 这是一个更细粒度的功能。
所以在你的情况下,当 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()