我知道我可以散列奇异值作为dict
. 例如,我可以将哈希5
作为dict
.
我目前面临一个问题,需要我对一系列值进行散列。
基本上,我需要一种更快的方法来做到这一点:
if 0 <= x <= 0.1:
# f(A)
elif 0.1 <= x <= 0.2:
# f(B)
elif 0.2 <= x <= 0.3:
# f(C)
elif 0.3 <= x <= 0.4:
# f(D)
elif 0.4 <= x <= 0.5:
# f(E)
elif 0.5 <= x <= 0.6:
# f(F)
其中x
是一些float
任意精度的参数。
我能想到的最快方法是散列,但问题是:我可以(0.1, 0.2)
用作密钥,但这仍然会花费我 O(n) 运行时间,并且最终不会比elif
s 的转换好(我必须遍历键并检查是否key[0] <= x <= key[1]
)。
有没有办法散列一系列值,以便我可以检查散列表0.15
并仍然得到#execute B
?
如果这样的散列是不可能的,我还能如何改进它的运行时间?我正在处理足够大的数据集,线性运行时间不够快。
编辑:为了回应奇恩的回答,我必须注意不能假设间隔是规则的。事实上,我几乎可以保证他们不是
为了回应评论中的请求,我应该提到我这样做是为了在遗传算法中实现基于适应度的选择。算法本身是做功课的,但具体实现只是为了提高生成实验数据的运行时间。