如何比较两个复杂的数据结构?

7 投票
3 回答
9345 浏览
提问于 2025-04-15 22:20

我有一些嵌套的数据结构,每个结构大概是这样的:

[ ('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(字典)等,已经支持相等和比较操作。对于你自己创建的类型,你需要实现一些特殊的方法,才能让它们也支持这些比较功能。

撰写回答