Вложенные словари Python

Вложенные словари Python: примеры и методы работы

Вложенные словари в Python — это концепция, при которой словарь содержит другие словари как свои элементы. Такой подход становится очень полезным при работе с большими объемами данных, требующими группировки или иерархической организации.

Создание вложенных словарей

Базовое создание

nested_dict = {
    'dict1': {'name': 'John', 'age': '27', 'sex': 'Male'},
    'dict2': {'name': 'Marie', 'age': '22', 'sex': 'Female'}
}

В этом примере nested_dict — это вложенный словарь, содержащий два других словаря: dict1 и dict2. Каждый из этих словарей содержит информацию о разных людях.

Создание вложенных словарей из списков

names = ["John", "Marie"]
ages = [27, 22]
sexes = ["Male", "Female"]

nested_dict = {f"dict{i+1}": {"name": names[i], "age": ages[i], "sex": sexes[i]} for i in range(len(names))}

print(nested_dict)

#{'dict1': {'name': 'John', 'age': 27, 'sex': 'Male'}, 'dict2': {'name': 'Marie', 'age': 22, 'sex': 'Female'}}

В этом примере мы используем списки и генератор словарей для создания вложенного словаря.

Работа с вложенными словарями

Обращение к элементам

nested_dict = {
    'dict1': {'name': 'John', 'age': '27', 'sex': 'Male'},
    'dict2': {'name': 'Marie', 'age': '22', 'sex': 'Female'}
}

print(nested_dict['dict1']['name'])  

#John

Чтобы получить доступ к элементу вложенного словаря, мы обращаемся к нему по ключу верхнего словаря, а затем — по ключу внутреннего словаря.

Изменение элементов

nested_dict = {
    'dict1': {'name': 'John', 'age': '27', 'sex': 'Male'},
    'dict2': {'name': 'Marie', 'age': '22', 'sex': 'Female'}
}

nested_dict['dict1']['age'] = 28
print(nested_dict['dict1'])  

#{'name': 'John', 'age': 28, 'sex': 'Male'}

Мы можем изменять значения вложенного словаря, обращаясь к ним по ключам, как в предыдущем примере.

Добавление элементов

nested_dict = {
    'dict1': {'name': 'John', 'age': '27', 'sex': 'Male'},
    'dict2': {'name': 'Marie', 'age': '22', 'sex': 'Female'}
}

nested_dict['dict1']['job'] = 'Engineer'
print(nested_dict['dict1'])  

#{'name': 'John', 'age': '27', 'sex': 'Male', 'job': 'Engineer'}

Добавление нового элемента в вложенный словарь также выполняется по принципу обращения по ключам.

Методы работы с вложенными словарями

Получение всех ключей

nested_dict = {
    'dict1': {'name': 'John', 'age': '27', 'sex': 'Male'},
    'dict2': {'name': 'Marie', 'age': '22', 'sex': 'Female'}
}

for i in nested_dict:
    print(i)  
    
#dict1
#dict2

Этот код выводит все ключи верхнего словаря. Для получения ключей вложенного словаря нужно добавить еще один цикл.

Получение всех значений

nested_dict = {
    'dict1': {'name': 'John', 'age': '27', 'sex': 'Male'},
    'dict2': {'name': 'Marie', 'age': '22', 'sex': 'Female'}
}

for i in nested_dict.values():
    print(i)

#{'name': 'John', 'age': '27', 'sex': 'Male'}
#{'name': 'Marie', 'age': '22', 'sex': 'Female'}

Метод values() позволяет получить все значения верхнего словаря.

Использование Метода get()

nested_dict = {
    'dict1': {'name': 'John', 'age': '27', 'sex': 'Male'},
    'dict2': {'name': 'Marie', 'age': '22', 'sex': 'Female'}
}

print(nested_dict.get('dict1'))  

#{'name': 'John', 'age': '27', 'sex': 'Male'}

Метод get() обеспечивает безопасный доступ к элементам словаря, возвращая None, если ключ не найден.

Вложенные словари в JSON

Вложенные словари часто используются при работе с данными в формате JSON, где иерархическая структура данных очень распространена.

import json

json_data = """
{
  "employees": {
    "employee1": {
      "name": "John",
      "age": "27",
      "sex": "Male"
    },
    "employee2": {
      "name": "Marie",
      "age": "22",
      "sex": "Female"
    }
  }
}
"""

data = json.loads(json_data)
print(data['employees']['employee1']['name'])  

#John

В этом примере мы загружаем данные JSON в Python как вложенный словарь и получаем доступ к его элементам.

Заключение

Вложенные словари в Python — это мощный инструмент для работы с иерархическими данными. Они обеспечивают гибкость и удобство при обработке больших объемов данных, представленных в виде структурированных ключей и значений.

Содержание: