我有一些嵌套的数据结构,每个这样的:如何比较两个复杂的数据结构?
[ ('foo', [ {'a':1, 'b':2},
{'a':3.3, 'b':7} ]),
('bar', [ {'a':4, 'd':'efg', 'e':False} ]) ]
我需要比较这些结构,看看是否有任何差异。没有写一个函数来明确地遍历结构,有没有一个现有的库或者做这种递归比较的方法?
我有一些嵌套的数据结构,每个这样的:如何比较两个复杂的数据结构?
[ ('foo', [ {'a':1, 'b':2},
{'a':3.3, 'b':7} ]),
('bar', [ {'a':4, 'd':'efg', 'e':False} ]) ]
我需要比较这些结构,看看是否有任何差异。没有写一个函数来明确地遍历结构,有没有一个现有的库或者做这种递归比较的方法?
内置聚合类型(list
,tuple
,dict
等)已经支持相等和关系比较。对于您创建的类型,您需要实施rich comparison methods。
您的示例数据结构已经进行了适当的相等性测试,因为您正在使用内置数据类型,该类型正确实施__eq__
和__ne__
,包括递归嵌套值。
如果你要包括你自己的类,你需要实现这两种方法(注意,实施__eq__
不意味着,如果你做一个!=比较您__eq__
将被调用,你必须实现__ne__
,太)。
如果我不需要在Python本身内使用diff,我可能会最终黑客入侵它。将两者都转换为yaml,然后在它们上运行diff。 :D
你比较什么? – SilentGhost 2010-05-04 10:47:42
你需要看看他们是否平等,或者真的找到他们不同的地方? – doublep 2010-05-04 10:48:13
找到他们不同的地方,如果他们这样做。 – 2010-05-04 17:56:04