6

キーが0と1の間の最小/最大値のペアであるPythonで辞書を構築したいと思います。例:

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

セット内の数値で辞書のエントリを呼び出すことができるようにしたいと思います[最小、最大)。

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

これを行うための素晴らしく簡単な方法があるかもしれないと感じています。ただし、私はまだパイソンおむつを履いているので、とらえどころのないものです。

4

1 に答える 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'
于 2013-04-13T11:28:15.850 に答える