如何比较两个复杂的数据结构?
我有一些嵌套的数据结构,每个结构大概是这样的:
[ ('foo', [ {'a':1, 'b':2},
{'a':3.3, 'b':7} ]),
('bar', [ {'a':4, 'd':'efg', 'e':False} ]) ]
我需要比较这些结构,看看它们之间有没有什么不同。除了写一个函数来逐层检查这些结构,有没有现成的库或者方法可以用来进行这种递归比较呢?
3 个回答
0
如果我不需要在Python里面使用差异比较的话,我可能会自己动手搞定。把两个文件都转换成yaml格式,然后对它们进行差异比较。:D
3
你提供的示例数据结构已经可以正确地进行相等性测试,因为你使用的是内置的数据类型,这些类型已经正确地实现了 __eq__
和 __ne__
方法,并且可以处理嵌套的值。
如果你想使用自己的类,就需要自己实现这两个方法(注意,单独实现 __eq__
并不意味着在进行不相等比较时会自动调用 __eq__
,你也必须实现 __ne__
)。
7
内置的聚合类型,比如 list
(列表)、tuple
(元组)、dict
(字典)等,已经支持相等和比较操作。对于你自己创建的类型,你需要实现一些特殊的方法,才能让它们也支持这些比较功能。