Вложенный словарь в Python
В Python словарь — это неупорядоченная коллекция элементов. Например:
dictionary = {'key' : 'value',
'key_2': 'value_2'}
Здесь словарь содержит пару key:value в фигурных скобках {}.
Подробнее о словарях: Словари (Dictionary) в Python.
Что такое вложенный словарь?
В Python вложенный словарь — это словарь внутри словаря. Это коллекция словарей, объединённая в один словарь.
nested_dict = { 'dictA': {'key_1': 'value_1'},
'dictB': {'key_2': 'value_2'}}
Здесь nested_dict — вложенный словарь со словарями dictA и dictB. Это два словаря, каждый со своим ключом и значением.
Создание вложенного словаря
Создадим словарь людей внутри словаря.
Пример 1: Как создать вложенный словарь
people = {1: {'name': 'John', 'age': '27', 'sex': 'Male'},
2: {'name': 'Marie', 'age': '22', 'sex': 'Female'}}
print(people)
При запуске вывод:
{1: {'name': 'John', 'age': '27', 'sex': 'Male'}, 2: {'name': 'Marie', 'age': '22', 'sex': 'Female'}}
В этой программе people — вложенный словарь. Внутренние словари 1 и 2 присвоены people. Оба внутренних словаря имеют ключи name, age, sex с разными значениями.
Доступ к элементам вложенного словаря
Для доступа к элементам вложенного словаря используем синтаксис индексации [].
Пример 2: Доступ через []
people = {1: {'name': 'John', 'age': '27', 'sex': 'Male'},
2: {'name': 'Marie', 'age': '22', 'sex': 'Female'}}
print(people[1]['name'])
print(people[1]['age'])
print(people[1]['sex'])
Вывод:
John
27
Male
В программе мы выводим значение ключа name через people[1]['name'] из внутреннего словаря 1. Аналогично выводим значения age и sex.
Добавление элементов во вложенный словарь
Пример 3: Изменение или добавление элементов
people = {1: {'name': 'John', 'age': '27', 'sex': 'Male'},
2: {'name': 'Marie', 'age': '22', 'sex': 'Female'}}
people[3] = {}
people[3]['name'] = 'Luna'
people[3]['age'] = '24'
people[3]['sex'] = 'Female'
people[3]['married'] = 'No'
print(people[3])
Вывод:
{'name': 'Luna', 'age': '24', 'sex': 'Female', 'married': 'No'}
Мы создаём пустой словарь 3 внутри people. Затем добавляем пары key:value — people[3]['name'] = 'Luna' и так далее. При выводе people[3] получаем пары ключ:значение словаря 3.
Пример 4: Добавление другого словаря в вложенный словарь
people = {1: {'name': 'John', 'age': '27', 'sex': 'Male'},
2: {'name': 'Marie', 'age': '22', 'sex': 'Female'},
3: {'name': 'Luna', 'age': '24', 'sex': 'Female', 'married': 'No'}}
people[4] = {'name': 'Peter', 'age': '29', 'sex': 'Male', 'married': 'Yes'}
print(people[4])
Вывод:
{'name': 'Peter', 'age': '29', 'sex': 'Male', 'married': 'Yes'}
Здесь мы присваиваем литерал словаря people[4]. Литерал имеет ключи name, age и sex со значениями. Затем выводим people[4], чтобы убедиться, что словарь 4 добавлен в people.
Удаление элементов из вложенного словаря
В Python используем оператор del для удаления элементов.
Пример 5: Удаление элементов
people = {1: {'name': 'John', 'age': '27', 'sex': 'Male'},
2: {'name': 'Marie', 'age': '22', 'sex': 'Female'},
3: {'name': 'Luna', 'age': '24', 'sex': 'Female', 'married': 'No'},
4: {'name': 'Peter', 'age': '29', 'sex': 'Male', 'married': 'Yes'}}
del people[3]['married']
del people[4]['married']
print(people[3])
print(people[4])
Вывод:
{'name': 'Luna', 'age': '24', 'sex': 'Female'}
{'name': 'Peter', 'age': '29', 'sex': 'Male'}
В программе мы удаляем пары key:value married из внутренних словарей 3 и 4. Затем выводим people[3] и people[4] для подтверждения.
Пример 6: Удаление словаря из вложенного словаря
people = {1: {'name': 'John', 'age': '27', 'sex': 'Male'},
2: {'name': 'Marie', 'age': '22', 'sex': 'Female'},
3: {'name': 'Luna', 'age': '24', 'sex': 'Female'},
4: {'name': 'Peter', 'age': '29', 'sex': 'Male'}}
del people[3], people[4]
print(people)
Вывод:
{1: {'name': 'John', 'age': '27', 'sex': 'Male'}, 2: {'name': 'Marie', 'age': '22', 'sex': 'Female'}}
Мы удаляем оба внутренних словаря 3 и 4 через del из вложенного словаря people.
Итерация по вложенному словарю
С помощью циклов for можно итерироваться по элементам вложенного словаря.
Пример 7: Итерация
people = {1: {'Name': 'John', 'Age': '27', 'Sex': 'Male'},
2: {'Name': 'Marie', 'Age': '22', 'Sex': 'Female'}}
for p_id, p_info in people.items():
print("\nPerson ID:", p_id)
for key in p_info:
print(key + ':', p_info[key])
Вывод:
Person ID: 1
Name: John
Age: 27
Sex: Male
Person ID: 2
Name: Marie
Age: 22
Sex: Female
Первый цикл возвращает все ключи вложенного словаря people — ID каждого человека. Эти ID используются для распаковки информации p_info. Второй цикл проходит по информации каждого человека, возвращая ключи name, age, sex.
Ключевые моменты
Примечание
Вложенный словарь — неупорядоченная коллекция словарей.
Срезы вложенного словаря невозможны.
Вложенный словарь можно сужать и расширять по мере необходимости.
Как и обычный словарь, имеет ключи и значения.
Доступ к словарю осуществляется по ключу.
См. также: Dictionary Comprehension в Python.