Проверка, эквивалентны ли два массивных словаря Python - PullRequest
8 голосов
/ 30 сентября 2011

У меня огромный словарь Python с более чем 90 000 записей.По причинам, в которые я не буду входить, мне нужно сохранить этот словарь в моей базе данных, а затем перекомпилировать словарь из записей базы данных.

Я пытаюсь настроить процедуру для проверки того, что мое хранение и перекомпиляция были точными и что мой новый словарь эквивалентен старому.Какова наилучшая методология для тестирования этого.

Есть небольшие различия, и я хочу выяснить, что они есть.

Ответы [ 3 ]

12 голосов
/ 30 сентября 2011

Самым очевидным подходом, конечно, является:

if oldDict != newDict:
  print "**Failure to rebuild, new dictionary is different from the old"

Это должно быть как можно быстрее, поскольку для сравнения используется внутреннее устройство Python.

ОБНОВЛЕНИЕ : Кажется, вы не после "равных", а что-то более слабое.Я думаю, что вам нужно отредактировать свой вопрос, чтобы понять, что вы считаете «эквивалентным».

2 голосов
/ 30 сентября 2011

Вы можете начать с чего-то подобного и настроить его под свои нужды

>>> bigd = dict([(x, random.randint(0, 1024)) for x in xrange(90000)])
>>> bigd2 = dict([(x, random.randint(0, 1024)) for x in xrange(90000)])
>>> dif = set(bigd.items()) - set(bigd2.items())
1 голос
/ 30 сентября 2011
>>> d1 = {'a':1,'b':2,'c':3}
>>> d2 = {'b':2,'x':2,'a':5}
>>> set(d1.iteritems()) - set(d2.iteritems()) # items in d1 not in d2
set([('a', 1), ('c', 3)])
>>> set(d2.iteritems()) - set(d1.iteritems()) # items in d2 not in d1
set([('x', 2), ('a', 5)])

Редактировать Не голосуйте за этот ответ.Перейдите к Быстрое сравнение между двумя словарями Python и добавьте комментарий.Это очень полное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...