Python: как создать хеш из вложенных контейнеров - PullRequest
5 голосов
/ 17 ноября 2010

[Python 3.1]

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

Зачем мне это нужно:

Я кэширую результат некоторых вычислений в объекте pickle (на диске).Мне нужно будет сделать недействительным этот кэшированный файл, если функция вызывается с другими параметрами (это случается редко, поэтому я не собираюсь сохранять более одного файла на диск).Хеш будет использоваться для сравнения параметров.

Ответы [ 3 ]

2 голосов
/ 17 ноября 2010

Если все контейнеры являются кортежами, и все содержащиеся в них объекты являются хэшируемыми, то основной контейнер должен быть хэшируемым.

1 голос
/ 18 ноября 2010

Вы можете просто сериализовать параметры в нечто вроде JSON и использовать его для хэша.

0 голосов
/ 18 ноября 2010

Я бы сделал это с сериализацией json как строкой [и затем хэшировал бы эту строку, если это все еще необходимо].

...