Найти в Дзене
КУЗИНОБИТ

Урок 11: Словари (Dictionary) в Python.

Оглавление

Добро пожаловать на одиннадцатый урок нашего курса по программированию на Python! В предыдущих уроках мы познакомились с кортежами и другими структурами данных. Сегодня мы изучим словарь (dictionary) в Python — мощную и гибкую структуру данных, которая позволяет хранить пары "ключ-значение". Словари широко используются для эффективного хранения и доступа к данным по ключу.

В данную статью добавлены ссылки на GitHub в каждом примере. Также общая ссылка на GitHub для данного урока:
python_course/lesson_11 at main · kuzinobit/python_course

Что такое словарь?

Словарь в Python — это неупорядоченная коллекция элементов, где каждый элемент представлен в виде пары ключ и значение. Ключи должны быть уникальными и неизменяемыми типами данных (например, строки, числа, кортежи), а значения могут быть любого типа.

Создание словаря:

Словари создаются с помощью фигурных скобок {} или с помощью функции dict().

python_course/lesson_11/create_dict.py at main · kuzinobit/python_course
Примеры создания словарей.
Примеры создания словарей.
# Создание пустого словаря
empty_dict = {}

# Создание словаря с данными
person = {
"имя": "Иван",
"возраст": 30,
"город": "Москва" }

# Использование функции dict()
car = dict(марка="Toyota", модель="Camry", год=2020)

Доступ к элементам словаря.

Получение значения по ключу:

Для доступа к значению по ключу используется синтаксис dictionary[key].

python_course/lesson_11/get_key_dict.py at main · kuzinobit/python_course
Пример получения ключа из словаря.
Пример получения ключа из словаря.
person = {
"имя": "Иван",
"возраст": 30,
"город": "Москва" }

# Получение значения по ключу
print(person["имя"]) # Иван
print(person["город"]) # Москва

Метод get():

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

python_course/lesson_11/method_get_dict.py at main · kuzinobit/python_course
Пример использования метода git().
Пример использования метода git().
person = {
"имя": "Иван",
"возраст": 30,
"город": "Москва" }

# Использование метода get()
print(person.get("возраст")) # 30
print(person.get("профессия")) # None
print(person.get("профессия", "Не указана")) # Не указана

Изменение и добавление элементов.

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

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

python_course/lesson_11/add_element_dict.py at main · kuzinobit/python_course
Пример добавления элемента в словарь.
Пример добавления элемента в словарь.
person = {
"имя": "Иван",
"возраст": 30,
"город": "Москва" }

# Добавление нового элемента
person["профессия"] = "Инженер"
print(person)

Изменение значения существующего ключа:

Просто присвойте новое значение по существующему ключу.

python_course/lesson_11/change_element_dict.py at main · kuzinobit/python_course
Пример замены элемента в словаре.
Пример замены элемента в словаре.
person = {
"имя": "Иван",
"возраст": 30,
"город": "Москва" }

# Изменение значения
person["возраст"] = 31
print(person)

Удаление элементов.

Метод pop():

Удаляет элемент по ключу и возвращает его значение.

python_course/lesson_11/pop_dict.py at main · kuzinobit/python_course
Пример удаления элемента (и получения его значения) по ключу в словаре.
Пример удаления элемента (и получения его значения) по ключу в словаре.
person = {
"имя": "Иван",
"возраст": 30,
"город": "Москва" }

# Удаление элемента с помощью pop()
age = person.pop("возраст")
print(age) # 31
print(person)

Метод popitem():

Удаляет последний добавленный элемент (в версиях Python 3.7+).

python_course/lesson_11/popitem_dict.py at main · kuzinobit/python_course
Пример удаления последнего элемента в словаре.
Пример удаления последнего элемента в словаре.
person = {
"имя": "Иван",
"возраст": 30,
"город": "Москва" }

# Удаление последнего элемента
item = person.popitem()
print(item) # ('профессия', 'Инженер')
print(person)

Оператор del:

Удаляет элемент по ключу или полностью удаляет словарь.

python_course/lesson_11/del_dict.py at main · kuzinobit/python_course
Прмиер удаления элемента (и полностью словаря) по ключу в словаре.
Прмиер удаления элемента (и полностью словаря) по ключу в словаре.
person = {
"имя": "Иван",
"возраст": 30,
"город": "Москва" }

# Удаление элемента
del person["город"]
print(person)

# Полное удаление словаря
del person
print(person) # NameError: name 'person' is not defined

Метод clear():

Очищает словарь, удаляя все элементы.

python_course/lesson_11/clear_dict.py at main · kuzinobit/python_course
Пример очистки словаря.
Пример очистки словаря.
# Очистка словаря
person = {"имя": "Иван", "город": "Москва"}
person.clear()
print(person) # {}

Перебор элементов словаря.

Вы можете перебирать ключи, значения или пары ключ-значение словаря.

python_course/lesson_11/for_key_dict.py at main · kuzinobit/python_course
Пример перебора словарей.
Пример перебора словарей.
person = {"имя": "Иван", "город": "Москва", "профессия": "Инженер"}

# Перебор ключей
for key in person.keys():
print(key)

# Перебор значений
for value in person.values():
print(value)

# Перебор пар ключ-значение
for key, value in person.items():
print(f"{key}: {value}")

Словари и циклы.

Словари отлично сочетаются с циклами для обработки данных.

python_course/lesson_11/another_for_dict.py at main · kuzinobit/python_course
Пример использования for и словарей.
Пример использования for и словарей.
# Подсчет количества каждого символа в строке
text = "hello world"
char_count = {}

for char in text:
if char != " ":
char_count[char] = char_count.get(char, 0) + 1
print(char_count)

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

Словари могут содержать другие словари в качестве значений.

python_course/lesson_11/dict_in_dict.py at main · kuzinobit/python_course
Пример вложенного словаря.
Пример вложенного словаря.
# Вложенные словари
students = {
"student1": {
"name": "Иван",
"age": 20,
"grades": [5, 4, 5]
},
"student2": {
"name": "Мария",
"age": 22,
"grades": [5, 5, 5]
}
}

# Доступ к вложенным данным
print(students["student1"]["name"]) # Иван
print(students["student2"]["grades"]) # [5, 5, 5]

Словари и функции.

Использование **kwargs:

Функции могут принимать произвольное количество именованных аргументов, которые собираются в словарь.

python_course/lesson_11/kwargs_dict.py at main · kuzinobit/python_course
Пример использования произвольного количества именованных аргументов.
Пример использования произвольного количества именованных аргументов.
# Функция с **kwargs
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")

print_info(name="Анна", age=25, city="Санкт-Петербург")

Возврат словаря из функции:

Функции могут возвращать словари.

python_course/lesson_11/return_dict.py at main · kuzinobit/python_course
Пример использования функции для возврата словаря.
Пример использования функции для возврата словаря.
# Функция, возвращающая словарь
def create_person(name, age):
return {"name": name, "age": age}

person = create_person("Олег", 30)
print(person)

Методы словарей.

Метод update():

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

python_course/lesson_11/update_dict.py at main · kuzinobit/python_course
Пример использования метода update().
Пример использования метода update().
# Использование update()
person = {"name": "Иван", "age": 30}
additional_info = {"city": "Москва", "profession": "Инженер"}
person.update(additional_info)
print(person)

Метод setdefault():

Возвращает значение по ключу, если ключ существует, иначе добавляет ключ со значением по умолчанию.

python_course/lesson_11/setdefault_dict.py at main · kuzinobit/python_course
Пример использования метода setdefault().
Пример использования метода setdefault().
person = {"name": "Иван", "age": 30}

# Использование setdefault()
value = person.setdefault("salary", 50000)
print(value) # 50000
print(person)

Практические примеры.

Пример 1. Подсчет слов в тексте.

python_course/lesson_11/example_1_dict.py at main · kuzinobit/python_course
Пример подсчета слов в тексте.
Пример подсчета слов в тексте.
# Подсчет количества каждого слова в тексте
text = "python is great and python is dynamic"
words = text.split()
word_count = {}

for word in words:
word_count[word] = word_count.get(word, 0) + 1
print(word_count)

Пример 2. Инвертирование словаря.

python_course/lesson_11/example_2_dict.py at main · kuzinobit/python_course
Пример инвертирования словаря.
Пример инвертирования словаря.
# Инвертирование словаря
original_dict = {'a': 1, 'b': 2, 'c': 3}
inverted_dict = {value: key for key, value in original_dict.items()}
print(inverted_dict) # {1: 'a', 2: 'b', 3: 'c'}

Пример 3. Сортировка словаря по значениям.

python_course/lesson_11/example_3_dict.py at main · kuzinobit/python_course
Пример сортировки словаря по значениям.
Пример сортировки словаря по значениям.
# Сортировка словаря по значениям
import operator

scores = {'Иван': 90, 'Мария': 95, 'Олег': 85}
sorted_scores = dict(sorted(scores.items(), key=operator.itemgetter(1), reverse=True))
print(sorted_scores)

Заключение одиннадцатого урока.

Сегодня мы изучили:

  • Что такое словари и их особенности.
  • Как создавать и использовать словари в Python.
  • Доступ к элементам словаря и их изменение.
  • Удаление элементов из словаря.
  • Перебор элементов словаря с помощью циклов.
  • Вложенные словари для сложных структур данных.
  • Основные методы словарей и их применение.
  • Практические примеры использования словарей.

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

Домашняя работа.

Задание 1: Телефонная книга.

Создайте программу, которая реализует простую телефонную книгу с помощью словаря. Программа должна позволять:

  1. Добавлять новую запись (имя и номер телефона).
  2. Искать номер телефона по имени.
  3. Удалять запись по имени.
  4. Выводить все записи.

Задание 2: Студенты и их оценки.

  1. Создайте словарь, где ключами будут имена студентов, а значениями — списки их оценок.
  2. Реализуйте функцию calculate_average(scores), которая принимает список оценок и возвращает среднее значение.
  3. Используйте эту функцию, чтобы вывести имя каждого студента и его средний балл.

Задание 3*: Анализ текста.

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

Подсказки:

  • Используйте метод split() для разделения строки на слова.
  • Приведите слова к нижнему регистру с помощью метода lower().
  • Используйте модуль collections.Counter для упрощения задачи.

Вопросы для самопроверки.

  1. Что такое словарь в Python и как он отличается от списка?
  2. Как получить значение из словаря по ключу? Что произойдет, если ключ не существует?
  3. Как добавить новый элемент в словарь или изменить существующий?
  4. Как перебрать все ключи и значения в словаре?
  5. Можно ли использовать изменяемые типы данных в качестве ключей словаря?

Свои домашние работы отправляйте на почтовый ящик homework@kuzinobit.com.

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

Друзья, ставьте свои лайки и подписывайтесь на канал. Дальше будет только интереснее! До новых встреч!