Мое понимание состоит в том, что хеширование двух разных фризонсет (неизменяемых наборов Python), которые должны содержать объекты хэширования, должно приводить к двум различным хешам. Почему я получаю выход ниже для двух разных фризонов?Различные фенизоны python с одинаковым значением хэша
In [11]: a
Out[11]: frozenset({(2, -2), (2, -1), (3, -2), (3, -1)})
In [12]: b
Out[12]: frozenset({(4, -2), (4, -1), (5, -2), (5, -1)})
In [13]: hash(a)
Out[13]: 665780563440688
In [14]: hash(b)
Out[14]: 665780563440688
Я не знаю, какое отношение это, но: это не гарантирует, что два неравные значения будут иметь разные значения хэша (этого не может быть - существует гораздо больше, чем 2^64 возможных хешируемых значений), просто это необычно (и, надеюсь, не предсказуемо, потому что, если бы вы могли, например, DoS a сервер, предоставив ему кучу хеш-коллимирующих значений и превратив его dicts в линейное время вместо постоянного доступа). – abarnert
@abarnert Я думаю, что ваш комментарий является «релевантным», чтобы быть ответом. – Shashank
@Shashank: Ну, это зависит от того, как он просто наткнулся на один пример из миллиарда случайно или что-то еще странное происходит. Так или иначе, кто-то уже превратил это в ответ. – abarnert