Python字典键作为数字集合

6

我希望在Python中构建一个字典,其键是介于0和1之间的最小/最大值对。例如:

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

我希望能够使用在[min, max)范围内的数字来调用字典中的条目。

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

我觉得可能有一种不错、简单的方法来做这件事。但是这种方法很难抓到,因为我还处在 Python 的初学阶段。

1个回答

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'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接