2013-04-13 4 views
6

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

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

Я хотел бы быть возможность вызова записей в словаре с номером в пределах набор [мин, макс.].

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

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

ответ

11

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

>>> 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'