A way access values in nested key-value dicts using dot notation, e.g.
Before:
data = None
if needle in haystack:
if nested_needle in haystack[needle]:
data = haystack[needle][nested_needle]
if not data:
data = default_dataAfter:
from dictdots import DictDots
data = DictDots.get(
"needle.nested_needle", haystack, default=default_data
)- Run
pip install DictDots from dictdots import DictDotsDictDots.get("needle", haystack_dict, default=default_value)
DictDots supports List and Dict.
For example
from dictdots import DictDots
haystack = [
{
"needle": {
"nested": "you found me",
},
},
]
value = DictDots.get(haystack, "0.needle.nested")
print(value)Would output you found me.
A valid query string is a string of keys and/or indicies, separated by periods.
Strings can only contain alphanumeric characters, periods, and underscores.
Strings can not contain double-or-more dots.
Strings can not begin or end with a dot.
Each period in the string will tell DictDots to dig another layer into your nested data structure.
Dict dots does not hold your hand, if you give it a bad string, e.g _hello...world,
then it will just raise an InvalidQueryString.