LazyDict#
- class LazyDict(load_function, eval_function=None, *args, **kwargs)#
Bases:
dict[K,V],Generic[K,V]Dictionary that supports lazy loading and optional lazy value evaluation.
- Parameters:
load_function (Callable[[], dict[K, V] | Iterable[tuple[K, V]]]) – Callable returning either a dict or an iterable of
(key, value)pairs.eval_function (Callable[[V], Any] | None) – Optional callable applied to values on first access (per key).
args (Any)
kwargs (Any)
Example
>>> def load(): return {"a": "2 + 2"} >>> def evaluate(expr): return eval(expr) >>> d = LazyDict(load, evaluate) >>> d["a"] 4
- __init__(load_function, eval_function=None, *args, **kwargs)#
- Parameters:
load_function (Callable[[], dict[K, V] | Iterable[tuple[K, V]]])
eval_function (Callable[[V], Any] | None)
args (Any)
kwargs (Any)
- Return type:
None
Methods
__init__(load_function[, eval_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()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.
reload()Reload the dictionary using the original load function.
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()- keys() a set-like object providing a view on D's keys#
- values() an object providing a view on D's values#
- items() a set-like object providing a view on D's items#
- get(key, default=None)#
Return the value for key if key is in the dictionary, else default.
- Parameters:
key (K)
default (V | None)
- Return type:
V | None
- reload()#
Reload the dictionary using the original load function.
Clears existing values and evaluation state, then loads fresh data.
- Return type:
None
- 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.
- 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]