в python (3), какое наименьшее значение может вернуть hash(x)
?
Я хочу использовать хэши, чтобы быстро «дактилоскопировать» значения базы данных (в основном, это позволяет легко увидеть, равны ли два длинных одинаковых текста на самом деле или нет), и хочу избавиться от отрицательных чисел (для простоты), поэтому я подумал, что просто добавлю наименьшее возможное значение, чтобы получить значения от нуля и выше. руководство очень полезно заявляет, что "значения хеша являются целыми числами".это примерно столько, сколько я знал раньше.
Я был немного удивлен сегодня, когда обнаружил, что мой скомпилированный вручную Python на 64-битной Ubuntu, очевидно, использует 64-битные или около того для своей функции хеширования;я всегда думал, что это должно быть 32 бита.Влияет ли архитектура машины на функцию hash()
?
также, когда я компилировал python, я не установил никакой опции для компиляции для 64-битной архитектуры (надеясь, что это «просто сработает»).Python настраивает это сам или у меня теперь есть 32-битный Python на 64-битной машине?Я не думаю, что это глупый вопрос, поскольку вам часто предлагают отдельные пакеты в зависимости от процессора.
edit : я сильно подозреваю, что ответ будет тесно связан с sys.maxint
, к сожалению,Удалено из Python 3. Я подозреваю, что я должен def xhash( x ): return hash( x ) - ( -maxint - 1 )
, если maxint
был доступен.я знаю, что это значение «потеряло свою ценность» из-за объединения целых и длинных, но здесь может быть одна область, в которой оно все еще может оказаться полезным.У кого-нибудь есть идеи, как реализовать аналог?