LazyEvalDict#
- class LazyEvalDict(eval_function, *args, **kwargs)#
Bases:
dict
A dictionary that evaluates values lazily upon access.
This class extends the standard Python dictionary to support lazy evaluation of its values. A user-defined function is applied to the value associated with a key the first time that key is accessed. Subsequent accesses return the already-evaluated value without invoking the evaluation function again. This approach is beneficial in scenarios where the value computation is expensive, and the result is needed only on demand.
- Attributes:
_eval_function: Callable function used to lazily evaluate values. _evaluated_keys: Set of keys whose values have already been evaluated.
- __init__(eval_function, *args, **kwargs)#
Initializes an instance of a class that performs actions based on a provided evaluation function. Ensures the evaluation function is callable and prepares an internal state to track evaluated keys.
Parameters#
Raises#
- TypeError
If eval_function is not callable.
Methods
__init__
(eval_function, *args, **kwargs)Initializes an instance of a class that performs actions based on a provided evaluation function.
clear
()copy
()fromkeys
(iterable[, value])Create a new dictionary with keys from iterable and values set to value.
get
(key[, default])Return the value for key if key is in the dictionary, else default.
items
()Return all key-value pairs, forcing evaluation of any unevaluated entries.
keys
()pop
(k[,d])If the key is not found, return the default if given; otherwise, raise a KeyError.
popitem
()Remove and return a (key, value) pair as a 2-tuple.
setdefault
(key[, default])Insert key with a value of default if key is not in the dictionary.
update
([E, ]**F)If E is present and has a .keys() method, then does: for k in E.keys(): D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]
values
()Return all values, forcing evaluation of any unevaluated entries.
- clear() None. Remove all items from D. #
- copy() a shallow copy of D #
- classmethod fromkeys(iterable, value=None, /)#
Create a new dictionary with keys from iterable and values set to value.
- get(key, default=None, /)#
Return the value for key if key is in the dictionary, else default.
- items()#
Return all key-value pairs, forcing evaluation of any unevaluated entries.
- keys() a set-like object providing a view on D's keys #
- pop(k[, d]) v, remove specified key and return the corresponding value. #
If the key is not found, return the default if given; otherwise, raise a KeyError.
- popitem()#
Remove and return a (key, value) pair as a 2-tuple.
Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.
- setdefault(key, default=None, /)#
Insert key with a value of default if key is not in the dictionary.
Return the value for key if key is in the dictionary, else default.
- update([E, ]**F) None. Update D from mapping/iterable E and F. #
If E is present and has a .keys() method, then does: for k in E.keys(): D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]
- values()#
Return all values, forcing evaluation of any unevaluated entries.