Python 以范围为键的词典

Python 以范围为键的词典,python,dictionary,range,Python,Dictionary,Range,在Python中,如何从一系列值映射到一个具体值? 基本上,我想要一本字典,我可以用范围填充,用数字索引: rd = rangedict() rd[(0, 10)] = 5 print rd[4] # prints 5 print rd[6] # prints 5 rd[(5, 15)] = 20 print rd[4] # prints 5 print rd[6] # prints 20 感谢这些评论,我可以使用intervaltree包找到解决方案 from intervaltree im

在Python中,如何从一系列值映射到一个具体值? 基本上,我想要一本字典,我可以用范围填充,用数字索引:

rd = rangedict()
rd[(0, 10)] = 5
print rd[4] # prints 5
print rd[6] # prints 5
rd[(5, 15)] = 20
print rd[4] # prints 5
print rd[6] # prints 20

感谢这些评论,我可以使用
intervaltree
包找到解决方案

from intervaltree import IntervalTree

tree = IntervalTree()
tree.addi(0, 10, 5)
print tree[4]
print tree[6]

# need to chop before, as the library stores both intervals otherwise
tree.chop(5, 15)
tree.addi(5, 15, 20)
print tree[4]
print tree[6]

你可以使用区间树

安装间隔树

from intervaltree import Interval, IntervalTree
rd = IntervalTree()

rd[0:10] = 5
print rd[4]
print rd[5]

使用“间隔”而不是“范围”的快速谷歌搜索会导致和(1)不允许覆盖。(2) 使用线性搜索代替高效哈希,不更新值。这两种方法都不能解决我在问题中提出的要求。以目前的形式来看,这个问题并没有脱离stackoverflow的主题。“prints 4”是否意味着“prints 5”?@knub:在这种情况下,不要将散列称为“高效”,因为最适合您的数据结构可能是an或a。