改变字典的哈希函数

gsa*_*ras 5 python hash dictionary python-2.7 locality-sensitive-hash

跟随这个问题,我们知道两个不同的字典,dict_1例如dict_2使用完全相同的哈希函数。

有什么方法可以改变字典使用的哈希函数吗?否定答案也被接受!

dee*_*ets 5

您无法更改哈希函数 - 字典将调用hash它应该插入的键,就是这样。

但是,您可以包装键以提供不同的__hash____eq__方法。

class MyHash(object):
     def __init__(self, v):
         self._v = v

     def __hash__(self):
         return hash(self._v) * -1

     def __eq__(self, other):
         return self._v == other._v
Run Code Online (Sandbox Code Playgroud)

如果这实际上对我怀疑的原始问题/问题有任何帮助,那么似乎基于自定义数组/列表的数据结构可能是答案。或不。