← Все вопросы

Как работать с вложенными словарями в Python?

Задан 19 месяцев назад651 просмотров3 ответа
12

У меня словарь, внутри которого тоже словари, например {'user1': {'age': 20, 'city': 'Москва'}}. Как доставать значения вглубь и безопасно обращаться, если какого-то ключа может не быть?

3 ответа

23
✓ Принятый ответ — помог автору

Доступ — просто цепочкой квадратных скобок:

data = {'user1': {'age': 20, 'city': 'Москва'}}
print(data['user1']['city'])   # Москва

Но если любой ключ в цепочке может отсутствовать — обычный доступ упадёт с KeyError. Безопаснее через .get() с дефолтом-словарём, чтобы следующий .get() было к чему применить:

city = data.get('user1', {}).get('city', 'неизвестно')

Здесь если нет user1, вернётся пустой {}, и второй .get спокойно отдаст 'неизвестно' вместо ошибки. Для глубоко вложенных структур (JSON, конфиги) этот приём с .get(key, {}) на каждом уровне — самый ходовой.

Диана Комарова трюк с .get('key', {}) — гениально просто, спасибо 🙏 · 18 месяцев назад
8

Цепочкой ключей: data['a']['b']. Если ключа может не быть — data.get('a', {}).get('b').

5

Для создания вложенности на лету удобен defaultdict(dict) — не надо вручную заводить внутренние словари.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект