2016-01-11 16 views
7

Wie kann ich in Python aus einem Wertebereich einen konkreten Wert zuordnen? Grundsätzlich mag ich ein Wörterbuch, das ich mit Bereichen und Index mit Zahlen füllen:Wörterbuch mit Bereich als Schlüssel

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 
+1

eine schnelle Google 'Intervall' und nicht 'Bereich' führt zu https: // Code .google.com/p/intervalmap/und http://joshuakugler.com/archives/30-BetweenDict,-a-Python-dict-for-value-ranges.html –

+0

(1) Erlaubt kein Überschreiben. (2) Verwendet lineare Suche anstelle von effizientem Hashing, keine Aktualisierung von Werten. Beide lösen nicht die Anforderungen, die ich in der Frage angegeben habe. – knub

+0

Die Frage in ihrer aktuellen Form erscheint nicht off-topic für Stackoverflow. – user4815162342

Antwort

0

Dank der Kommentare, die ich eine Lösung mit dem intervaltree Paket finden konnte.

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] 
Verwandte Themen