Python - Вложенные Словари
Привет, стремящиеся кoders! Сегодня мы погружаемся в увлекательный мир вложенных словарей в Python. Не волнуйтесь, если вы новичок в программировании - я веду вас по этой теме шаг за шагом, как я делал это для множества студентов на протяжении многих лет своей преподавательской деятельности. Так что возьмите свой любимый напиток, устроитесь комфортно и давайте отправимся в это приключение с Python вместе!
Вложенные Словари
Что такое Вложенные Словари?
Представьте себе, что у вас есть большая коробка (основной словарь), и внутри этой коробки несколько меньших коробок (вложенные словари). Каждая из этих меньших коробок может содержать различные предметы (пары ключ-значение). Вот по сути что такое вложенный словарь - словарь внутри словаря.
Начнем с простого примера:
student = {
"name": "Alice",
"age": 20,
"grades": {
"math": 95,
"science": 88,
"history": 92
}
}
В этом примере student
- наш основной словарь. Он содержит базовую информацию о Alice, включая вложенный словарь grades
, который хранит ее оценки по различным предметам.
Создание Вложенного Словаря в Python
Создание вложенного словаря аналогично созданию обычного словаря, но вы добавляете другой словарь как значение. Давайте создадим более сложный пример - справочник школы:
school = {
"Grade 9": {
"Alice": {
"age": 14,
"subjects": ["Math", "Science", "English"]
},
"Bob": {
"age": 15,
"subjects": ["History", "Art", "PE"]
}
},
"Grade 10": {
"Charlie": {
"age": 16,
"subjects": ["Physics", "Chemistry", "Biology"]
}
}
}
Здесь у нас есть основной словарь school
, который содержит уровни классов как ключи. Каждый уровень класса является другим словарем, содержащим имена студентов как ключи. Каждый студент затем имеет свой собственный словарь с личной информацией.
Добавление Элементов в Вложенный Словарь в Python
Добавление элементов в вложенный словарь просто. Вы можете либо добавить новую пару ключ-значение к существующему вложенному словарю, либо создать новый вложенный словарь совместно.
Давайте добавим нового студента в Grade 10:
school["Grade 10"]["Diana"] = {
"age": 15,
"subjects": ["Math", "Computer Science", "Literature"]
}
print(school["Grade 10"])
Вывод:
{
'Charlie': {'age': 16, 'subjects': ['Physics', 'Chemistry', 'Biology']},
'Diana': {'age': 15, 'subjects': ['Math', 'Computer Science', 'Literature']}
}
Мы также можем добавить новый уровень класса:
school["Grade 11"] = {
"Eve": {
"age": 17,
"subjects": ["Economics", "Psychology", "French"]
}
}
print(school.keys())
Вывод:
dict_keys(['Grade 9', 'Grade 10', 'Grade 11'])
Доступ к Элементам Вложенного Словаря в Python
Для доступа к элементам в вложенном словаре мы используем несколько квадратных скобок, каждая из которых представляет собой уровень вложенности. Давайте извлечем некоторую информацию из нашего словаря school
:
# Получение возраста Alice
alice_age = school["Grade 9"]["Alice"]["age"]
print(f"Возраст Alice: {alice_age}")
# Получение предметов Charlie
charlie_subjects = school["Grade 10"]["Charlie"]["subjects"]
print(f"Предметы Charlie: {charlie_subjects}")
Вывод:
Возраст Alice: 14
Предметы Charlie: ['Physics', 'Chemistry', 'Biology']
Помните, если вы не уверены насчет структуры вашего вложенного словаря, вы всегда можете использовать метод get()
, чтобы избежать исключений KeyError:
# Попытка получить несуществующего студента
frank_age = school.get("Grade 9", {}).get("Frank", {}).get("age", "Не найдено")
print(f"Возраст Frank: {frank_age}")
Вывод:
Возраст Frank: Не найдено
Удаление Словаря из Вложенного Словаря
Для удаления вложенного словаря мы используем ключевое слово del
. Давайте удалем Bob из Grade 9:
del school["Grade 9"]["Bob"]
print(school["Grade 9"])
Вывод:
{'Alice': {'age': 14, 'subjects': ['Math', 'Science', 'English']}}
Будьте осторожны при удалении элементов из вложенных словарей. Всегда убедитесь, что ключи существуют, чтобы избежать исключений KeyError.
Итерация по Вложенному Словарю в Python
Итерация по вложенному словарю требует вложенных циклов. Давайте выведем всю информацию из нашего словаря school
:
for grade, students in school.items():
print(f"\n{grade}:")
for student, info in students.items():
print(f" {student}:")
for key, value in info.items():
print(f" {key}: {value}")
Вывод:
Grade 9:
Alice:
age: 14
subjects: ['Math', 'Science', 'English']
Grade 10:
Charlie:
age: 16
subjects: ['Physics', 'Chemistry', 'Biology']
Diana:
age: 15
subjects: ['Math', 'Computer Science', 'Literature']
Grade 11:
Eve:
age: 17
subjects: ['Economics', 'Psychology', 'French']
Эта структура вложенных циклов позволяет нам получить и вывести все уровни нашего вложенного словаря.
Методы Работы с Вложенными Словарями
Вот таблица полезных методов для работы с вложенными словарями:
Метод | Описание |
---|---|
dict.items() |
Возвращает объект просмотра, содержащий пары ключ-значение словаря |
dict.keys() |
Возвращает объект просмотра, содержащий ключи словаря |
dict.values() |
Возвращает объект просмотра, содержащий значения словаря |
dict.get(key, default) |
Возвращает значение для указанного ключа, если он существует, иначе возвращает значение по умолчанию |
dict.update(other_dict) |
Обновляет словарь элементами из другого словаря или итерируемого набора пар ключ-значение |
dict.pop(key, default) |
Удаляет и возвращает значение для указанного ключа. Если ключ не существует, возвращает значение по умолчанию |
Помните, эти методы могут применяться на любом уровне вложенного словаря.
Итак, у вас есть это, мои дорогие студенты! Мы исследовали все особенности вложенных словарей в Python. От создания и добавления элементов до доступа, удаления и итерации по ним, у вас теперь есть инструменты для работы с этими сложными структурами данных.
Как и с любой концепцией программирования, практика - это ключ. Попробуйте создать свои собственные вложенные словари, возможно, цифровую библиотечную каталогу или кулинарную книгу. Чем больше вы будете играть с этими структурами, тем более уверенно вы будете чувствовать себя.
Помните, в мире программирования ошибки - это просто возможности учиться. Так что не бойтесь экспериментировать и совершать ошибки - так мы все растем как программисты. Продолжайте программировать, учитесь и, что самое важное, наслаждайтесь Python!
Credits: Image by storyset