Хеширование диапазона значений

Я знаю, что могу хешировать особые значения как ключи в 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] ) .

Есть ли способ хешировать диапазон значений, чтобы я мог проверить хеш-таблицу на 0,15 и все равно получить #execute B ?

Если такое хеширование не невозможно, как еще я мог бы улучшить время выполнения этого? Я работаю с достаточно большими наборами данных, поэтому линейное время выполнения недостаточно быстрое.

РЕДАКТИРОВАТЬ : В ответ на ответ Чикена я должен отметить, что нельзя считать интервалы регулярными. Фактически, я могу почти гарантировать, что это не так.

В ответ на запросы в комментариях я должен упомянуть, что делаю это в попытке реализовать отбор на основе пригодности в генетическом алгоритме . Сам алгоритм предназначен для домашнего задания, но конкретная реализация предназначена только для улучшения времени выполнения для генерации экспериментальных данных.

10
задан inspectorG4dget 28 January 2012 в 20:12
поделиться