如何从深层差异中完全排除“type_changes”,因为我只关心值的更改?

问题描述 投票:0回答:1
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”。 我必须比较嵌套字典,而且我不关心类型。

python python-3.x dictionary python-deepdiff
1个回答
2
投票

来自 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()
© www.soinside.com 2019 - 2024. All rights reserved.