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

7

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

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

我需要比较这些结构,看看是否有任何差异。除了编写一个显式遍历结构的函数外,是否存在现有库或方法可以进行此类递归比较?

你在将什么与什么进行比较? - SilentGhost
你只需要判断它们是否相等,还是需要找出它们的不同之处? - user319799
如果它们不同,找出它们的区别所在。 - Phil H
要查看它们的区别,请参阅:https://dev59.com/GG025IYBdhLWcg3wnXWf#26171760 - Bernhard
3个回答

7

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


3
你的示例数据结构已经进行了适当的相等性测试,因为你正在使用内置的数据类型,这些数据类型正确地实现了__eq__和__ne__,包括递归到嵌套值中。
如果你想要包含自己的类,你需要实现这两个方法(请注意,实现__eq__并不意味着如果你进行!=比较,你的__eq__将被调用,你也必须实现__ne__)。

0

如果我在Python内部不需要使用diff,我可能最终会对其进行修改。将两者都转换为yaml,并在它们之间运行差异比较。:D


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接