A dictionary-like object that uses the keys as bounds for a range. Inclusion of the value for that range is determined by the key_match_comparator, which defaults to less-than-or-equal. A value is returned for a key if it is the first key that matches in the sorted list of keys.
Let's create a map that maps 1-3 -> 'a', 4-6 -> 'b'
>>> r = RangeMap({3: 'a', 6: 'b'}) # boy, that was easy >>> r[1], r[2], r[3], r[4], r[5], r[6] ('a', 'a', 'a', 'b', 'b', 'b')Even float values should work so long as the comparison operator supports it.
>>> r[4.5] 'b'But you'll notice that the way rangemap is defined, it must be open-ended on one side.
>>> r[0] 'a' >>> r[-1] 'a'One can close the open-end of the RangeMap by using undefined_value
>>> r = RangeMap({0: RangeMap.undefined_value, 3: 'a', 6: 'b'}) >>> r[0] Traceback (most recent call last): ... KeyError: 0One can get the first or last elements in the range by using RangeMap.Item
>>> last_item = RangeMap.Item(-1) >>> r[last_item] 'b'.last_item is a shortcut for Item(-1)
>>> r[RangeMap.last_item] 'b'Sometimes it's useful to find the bounds for a RangeMap
>>> r.bounds() (0, 6)RangeMap supports .get(key, default)
>>> r.get(0, 'not found') 'not found'>>> r.get(7, 'not found') 'not found'