Есть словарь user = {"id": 7}. Поле "profile" может отсутствовать, а если присутствует, то возраст лежит в user["profile"]["age"]. Как безопасно получить возраст без KeyError, чтобы при отсутствии вернулось None?

Auser.get("profile", {}).get("age")
Buser["profile"].get("age")
Cuser.get("profile").get("age")
Duser["age"]
Правильный ответ. Можно взять user.get("profile", {}), а затем вызвать .get("age") у полученного словаря.

Разбор

Если "profile" отсутствует, выражение user.get("profile", {}) вернёт пустой словарь {}. Тогда .get("age") вернёт None без исключения. Вариант user.get("profile").get("age") опасен: если "profile" нет, .get("profile") вернёт None, а у None нет метода .get().

Проверь себя · 1/3разбор после ответа
Какое утверждение про set верное?
Тренировать Python в Telegram

Ещё вопросы по теме «Коллекции и структуры данных»