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

2024-09-29 02:20:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些嵌套的数据结构,每一个都像:

[ ('foo', [ {'a':1, 'b':2},
                 {'a':3.3, 'b':7} ]),
  ('bar', [ {'a':4, 'd':'efg', 'e':False} ])   ]

我需要比较这些结构,看看是否有什么不同。除了编写一个函数来显式地遍历结构之外,是否有一个现有的库或方法来进行这种递归比较?


Tags: 方法函数false数据结构foobar结构efg
3条回答

内置的聚合类型(listtupledict等)已经支持相等和关系比较。对于您创建的类型,您需要实现rich comparison methods

您的示例数据结构已经进行了适当的相等测试,因为您正在使用正确实现__eq____ne__的内置数据类型,包括递归到嵌套值中。

如果要包含自己的类,则需要同时实现这两个方法(请注意,实现__eq__并不意味着实现一个!=比较您的__eq__将被调用,您还必须实现__ne__)。

如果我不需要在Python本身中使用diff,我可能最终会破解它。将两者转换为yaml,并对它们运行diff。:天

相关问题 更多 >