nested_dict#

class NestedDict(data=None)[source]#

Bases: dict

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(*keys)[source]#

Get a nested value from this dict.

Parameters:

keys (Tuple[Any]) – an unpacked tuple of keys used to access the value.

Return type:

Any

Example

>>> nd = NestedDict()
>>> nd.set('a', 'b', 'c', 15, priority=1)
>>> nd
{'a': {'b': {'c': 15}}}
>>> nd.get('a', 'b')
{'c': 15}
>>> nd.get('a', 'b', 'c')
15
items() → a set-like object providing a view on D's items#
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.

set(*args, priority=0)[source]#

Override of the standard dict.set method allowing for setting a nested key in one call.

Parameters:
  • args (Tuple[Any]) – an unpacked tuple of firstly keys and then the value to be set.

  • priority (float) – the priority for setting this value. If the given priority is higher than a previously set priority we set the value, otherwise we ignore it.

Raises:

ValueError – If there are not at least 2 arguments provided.

Examples

>>> nd = NestedDict()
>>> nd.set('a', 'b', 'c', 15, priority=1)
>>> nd
{'a': {'b': {'c': 15}}}
>>> nd.set('a', 'b', 'c', 'overwritten?', priority=0)
>>> nd
{'a': {'b': {'c': 15}}}
>>> nd.get('a', 'b', 'c')
15
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 dict/iterable E and F.#

If E is present and has a .keys() method, then does: for k in E: 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() → an object providing a view on D's values#