Как я сравниваю две сложных структуры данных?

Я имею, некоторые вложили datastructures, каждый что-то как:

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

Я должен сравнить эти структуры, чтобы видеть, существуют ли какие-либо различия. За исключением записи функции для явного обхода структуры, там существующая библиотека или метод выполнения этого вида рекурсивного сравнения?

6
задан Phil H 4 May 2010 в 10:44
поделиться

2 ответа

Встроенные типы агрегирования ( список , кортеж , dict и т. Д.) Уже поддерживают равенство и реляционное сравнение. Для создаваемых вами типов необходимо реализовать расширенные методы сравнения .

6
ответ дан 10 December 2019 в 02:43
поделиться

Структуры данных вашего примера уже будут выполнять соответствующее тестирование на равенство, потому что вы используете встроенные типы данных, которые правильно реализуют __ eq __ и __ ne __ , включая рекурсию во вложенные значения.

Если вы хотите включить свои собственные классы, вам необходимо реализовать оба этих метода (обратите внимание, что реализация __ eq __ не означает , что если вы выполните! = Сравните ваши __ eq__ будет вызываться, вы также должны реализовать __ ne __ ).

3
ответ дан 10 December 2019 в 02:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: