我正在寻找一种方法来为函数的单个调用设置python的hash()
盐。在文档中,我发现只有PYTHONHASHSEED为所有调用hash()
设置了盐。
但是,我需要hash
在特定对象调用时始终得到相同的结果,但我不想强制整个应用程序使用相同的(可预测的)盐。
上下文:在python2
中,我使用hash
将键值对象对事件分类到索引存储桶中。铲斗持续存放。这反过来取值。基本上,对于我做的每一对
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]
这需要hash
在解释器调用期间始终为每个实例获取相同的结果。
答案 0 :(得分:1)
import hashlib
def getHash(name):
m = hashlib.md5()
m.update(name)
return m.hexdigest()