Ключи словаря Python как набор чисел

Я хотел бы структурировать словарь на python, ключи которого представляют собой пары значений min / max между 0 и 1. Например:

myDict = {(0, .5): 'red', (.5, 1): 'orange'}

Я хотел бы иметь возможность вызывать записи в словаре с номером внутри набор [min, max).

>>> myDict[.464897]
'red'
>>> myDict[.5]
'orange'

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

1 ответов


предполагая, что интервалы не перекрываются, нет пробелов, и они сортируются, вы используете двоичный поиск:

>>> keys = [0.5, 1] # goes from 0 to 1, specify end interval
>>> vals = ['red', 'orange']
>>> import bisect
>>> vals[bisect.bisect_right(keys, 0.464897)]
'red'
>>> vals[bisect.bisect_right(keys, 0.5)]
'orange'