我有一些嵌套的數據結構,每個這樣的:如何比較兩個複雜的數據結構?
[ ('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