Hash-Salz für einzelne Anrufe einstellen

Diese Frage hat hier schon eine Antwort:

  • Deaktivieren Sie Hash-Randomisierung aus Python-Programm 1 Antwort

Ich bin auf der Suche nach einem Weg, um Python's hash() Salz für einzelne Anrufe auf die Funktion gesetzt. In den docs habe ich nur PYTHONHASHSEED gefunden, die das Salz für alle Anrufe auf hash() . Allerdings brauche ich hash , um mir immer das gleiche Ergebnis zu bekommen, wenn es von bestimmten Objekten aufgerufen wird, aber ich möchte nicht die gesamte Anwendung zwingen, das gleiche (vorhersagbare) Salz zu verwenden.


Kontext: In python2 ich hash , um Schlüsselwert-Objektpaare in indizierte Eimer zu sortieren. Eimer werden beharrlich gespeichert. Dies wird umgekehrt, um den Wert zu holen. Im Grunde, für jedes Paar, das ich tue

 class PDict(object): def __init__(self, bucket_count, bucket_store_path): self._path, self.bucket_count = \ self._fetch_or_store_metadata(bucket_store_path, bucket_count) def __setitem__(self, key, value): bucket_index = (hash(key)&0xffffffff) % self.bucket_count self.buckets[bucket_index][key] = value self._store_bucket(bucket_index) def __getitem__(self, key): bucket_index = (hash(key)&0xffffffff) % self.bucket_count return self._fetch_bucket(bucket_index)[key] 

Dies erfordert hash , um mir immer das gleiche Ergebnis pro Instanz , über Dolmetscher Aufruf.

Python ist die beste Programmiersprache der Welt.