easytree.dict

class easytree.dict(*args, sealed: bool = False, frozen: bool = False, **kwargs)

recursive dot-styled defaultdict

classmethod fromkeys(keys, value)

Create a dict from a set of keys and a fixed value

get(key, default=None)

Get item by key, if it is exists; otherwise, return default

If key is list, recursively traverses the tree

Parameters:

key (hashable, list[hashable]) – the key (or path of keys)

Returns:

value

Return type:

any

Example

>>> person = easytree.dict({"age":31, "friends":[{"firstname":"Michael"}]})
>>> person.get("age")
31
>>> person.get("address")
None
>>> person.get(["friends",0,"firstname"])
"Michael"
>>> person.get(["friends",1,"firstname"])
None
>>> person.get(["friends",0,"avatar"],"N/A")
"N/A"
pop(*args)

Remove and return an element from a dictionary having the given key.

Parameters:
  • key (any) – the key to pop

  • default (any) – the default value, if the key does not exist

Raises:
  • KeyError – if the given key does not exist, and no default value is given

  • AttributeError – if the dict is frozen, or if the dict is sealed

popitem()

Remove and return the last item (key, value pair) inserted into the dictionary

Raises:
  • KeyError – if the dict is empty

  • AttributeError – if the dict is frozen if the dict is sealed

setdefault(key, default)

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.

Parameters:
  • key (any) – the key

  • default (any) – the default value to insert if the key does not exist

Raises:

AttributeError – if the dict is frozen, or if the dict is sealed and the key does not exist in the dict

update(other)

Update the dict from keys and values of another mapping object

Parameters:

other (mapping) – other dictionary

Raises:

AttributeError – if the dict is frozen, or if the dict is sealed and a key of other does not exist in the dict