2013-04-13 75 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'