1

列表不可散列。但是,我正在实现 LSH,并且我正在寻找一个哈希函数,它将正整数列表(在 [1, 29.000] 中)对应于 k 个存储桶。列表的数量是 D,其中 D > k(我认为)和 D = 40.000,其中 k 尚不清楚(欢迎提出建议)。


示例(D = 4,k = 2):

118 | 27 | 1002 | 225
128 | 85 | 2000 | 8700
512 | 88 | 2500 | 10000
600 | 97 | 6500 | 24000
800 | 99 | 7024 | 25874

第一列应作为散列函数的输入并返回桶的编号。


让我困惑的是,我们不是在寻找一个函数来散列一个数字,而是一个列,即一个正整数列表。

请问有什么想法吗?

如果这很重要,我正在使用

4

1 回答 1

5

您可以在之前将其转换为可散列类型:

In [4]: hash(l)
TypeError: unhashable type: 'list'

hash(tuple(l)) % k  # 29000
Out[5]: 70846
于 2016-05-09T21:16:58.043 回答