Nearest Dictionary Recipe¶
-
class
sortedcollections.
NearestDict
(*args, **kwargs)[source]¶ A dict using nearest-key lookup.
A
SortedDict
subclass that uses nearest-key lookup instead of exact-key lookup. Optionally, you can specify a rounding mode to return the nearest key less than or equal to or greater than or equal to the provided key.When using
NearestDict.NEAREST
the keys must support subtraction to allow finding the nearest key (by find the key with the smallest difference to the given one).Additional methods:
Example usage:
>>> d = NearestDict({1.0: 'foo'}) >>> d[1.0] 'foo' >>> d[0.0] 'foo' >>> d[2.0] 'foo'
-
__getitem__
(request)[source]¶ Return item corresponding to
nearest_key()
.- Parameters
request – nearest-key lookup value
- Returns
item corresponding to key nearest request
- Raises
KeyError – if no appropriate item can be found
>>> d = NearestDict({1.0: 'foo'}) >>> d[0.0] 'foo' >>> d[2.0] 'foo'
>>> d = NearestDict({1.0: 'foo'}, rounding=NearestDict.NEAREST_NEXT) >>> d[0.0] 'foo' >>> d[2.0] Traceback (most recent call last): ... KeyError: 'No key above 2.0 found'
-
__init__
(*args, **kwargs)[source]¶ Initialize a NearestDict instance.
Optional rounding argument dictates how
NearestDict.nearest_key()
rounds. It must be one ofNearestDict.NEAREST_NEXT
,NearestDict.NEAREST
, orNearestDict.NEAREST_PREV
. (Default:NearestDict.NEAREST
)- Params rounding
how to round on nearest-key lookup (optional)
- Params args
positional arguments for
SortedDict
.- Params kwargs
keyword arguments for
SortedDict
.
-
nearest_key
(request)[source]¶ Return nearest-key to request, respecting self.rounding.
>>> d = NearestDict({1.0: 'foo'}) >>> d.nearest_key(0.0) 1.0 >>> d.nearest_key(2.0) 1.0
>>> d = NearestDict({1.0: 'foo'}, rounding=NearestDict.NEAREST_PREV) >>> d.nearest_key(0.0) Traceback (most recent call last): ... KeyError: 'No key below 0.0 found' >>> d.nearest_key(2.0) 1.0
- Parameters
request – nearest-key lookup value
- Returns
key nearest to request, respecting rounding
- Raises
KeyError – if no appropriate key can be found
-