python lib for custom hash function

时间:2016-09-03 10:33:14

标签: python

我需要一个哈希函数来获取一个十进制数字序列并返回一个十进制数作为哈希值。

例如:

>> def my_simple_hash(*args):
    return reduce(lambda x1, x2: 2*x1 + x2,  args) 

>>> my_simple_hash(1,3,4)
14
>>> my_simple_hash(1,4,3)
15
>>> my_simple_hash(4,3,1)
23

我的问题是:

  1. python是否有内置的lib来更有效地执行此操作?
  2. 如何将输出哈希值设置在相对较小的范围内?
  3. 问题2解释:

    因为1,3,4有六种不同的组合如下:

    1,3,4
    1,4,3
    3,1,4
    3,4,1
    4,1,3
    4,3,1
    

    相应的输出为[14, 15, 18, 21, 21, 23],我希望six输出的哈希值类似于[1,2,3,4,6](小范围)

    任何建议将不胜感激。 提前谢谢: - )

1 个答案:

答案 0 :(得分:1)

如果您只想散列数字序列,可以

hash

返回args-tuple的hash(对于当前的程序运行)(def my_hash(*args): return hash(args)%10 # or whatever number you like 是快速的并且对内置类型进行了很好的测试) - 但这仍然是一个很大的号。

要获得较小的值,您可以采用类似

的模数
def my_hash(*args):
    return sum(args)%10 # or whatever number you like

实际上你也可以使用

sum

在程序运行之间没有变化,但ceil()根本不会均匀分配结果。

警告:这些不是加密哈希