Хочешь писать чище и безопаснее, когда работаешь с вложенными
dict? Забудь про dict.get(...).get(...) и используй collections.ChainMap или types.SimpleNamespace — но ещё лучше: pydantic или dotmap.А вот компактный трюк на каждый день — безопасное извлечение с
functools.reduce:
from functools import reduce
def deep_get(dictionary, keys, default=None):
return reduce(lambda d, key: d.get(key, default) if isinstance(d, dict) else default, keys, dictionary)
data = {"user": {"profile": {"email": "test@example.com"}}}
email = deep_get(data, ["user", "profile", "email"])
📌 Почему это полезно:
- Нет KeyError
- Код читаемый
- Масштабируемо для любых уровней вложенности
🔥 Применяй в проектах, где много данных с API или JSON — избавит от лишних try/except и защитит от неожиданных крашей.
Python — это не только про лаконичность, но и про стабильность