Есть словарь user = {"id": 7}. Поле "profile" может отсутствовать, а если присутствует, возраст лежит в user["profile"]["age"]. Как безопасно получить возраст без KeyError, чтобы при отсутствии вернулось None?
A
user.get('profile', {}).get('age'): при отсутствии profile берётся пустой словарь и далее .getB
user['profile'].get('age'): обращение по ключу profile через прямую индексацию словаряC
user.get('profile').get('age'): цепочка из двух .get без подстраховки на промежуточном шагеD
user['age']: чтение возраста напрямую из корня словаря по одному ключуПравильный ответ. Берите промежуточный словарь через
.get(key, {}), а затем уже доставайте вложенное значение.Разбор
Если "profile" отсутствует, то user.get("profile", {}) вернёт пустой словарь, и .get("age") у него вернёт None без исключения. Вариант user.get("profile").get("age") опасен: при отсутствии ключа .get("profile") вернёт None, а у None нет метода .get(). Прямое обращение user["profile"] даст KeyError, а user["age"] ищет возраст не там.
Проверь себя · 1/3разбор после ответа
Есть список названий кампаний
campaigns с повторами. Нужно получить список уникальных кампаний в отсортированном виде. Какой вариант корректен?Ещё вопросы по теме «Коллекции и структуры данных»
- Есть список событий `events = ["click"]`. Объект `events` используется в нескольких местах по ссылке, поэтому важно изменить именно тот же объект (не создавать новый). Нужно добавить элементы из `new_events = ["view", "purchase"]`, чтобы итог был плоским. Какой вариант корректен?
- Дан словарь `d = {"country": "RU"}`. Нужно прочитать значение по ключу `"city"`, а если ключа нет — вернуть строку `"unknown"` без исключения. Что подходит?
- В логах есть список `user_ids` с повторениями. Как получить количество уникальных пользователей?
- Что произойдёт при выполнении кода `t = (1, 2); t[0] = 9`?
- Дан список `nums = [10, 20, 30, 40]`. Чему равен результат выражения `nums[1:3]`?
- Все вопросы по «Коллекции и структуры данных» →