В этом модуле мы переходим к изучению одной из самых мощных структур данных в Python — словарям (dictionary). Словари позволяют хранить данные в формате «ключ-значение», что делает их идеальными для создания баз данных, настроек конфигурации и работы с JSON.
Вы научитесь создавать словари разными способами: используя литералы (фигурные скобки), конструктор dict(), а также преобразуя другие структуры данных. Мы разберем, какие типы данных могут быть ключами, а какие — нет, и потренируемся избегать распространенных синтаксических ошибок при инициализации. Будьте внимательны к деталям: двоеточиям, запятым и кавычкам.
- Модуль 1: Основы синтаксиса Python
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Арифметические операторы (+, -, *, /).
- Целочисленное деление и остаток (// и %).
- Возведение в степень (**).
- Операторы сравнения.
- Логические операторы (and, or, not).
- Операторы присваивания (=, +=, -=).
- Операторы принадлежности (in, not in).
- Операторы идентичности (is, is not).
- Битовые операторы.
- Тернарный оператор.
- Модуль 4: Ввод и вывод данных
- Модуль 5: Условные конструкции
- Модуль 6: Циклы
- Модуль 7: Строки
- Модуль 8: Списки
- Модуль 9: Кортежи
- Модуль 10: Словари
- Создание словарей.
- Доступ к элементам словаря.
- Добавление и изменение элементов.
- Модуль 11: Множества
- Модуль 12: Функции
- Модуль 13: Встроенные функции
- Модуль 14: Работа с файлами
- Модуль 15: Обработка исключений
- Модуль 16: Модули и пакеты
- Модуль 17: ООП - Основы
- Модуль 18: ООП - Продвинутый уровень
- Модуль 19: Декораторы
- Модуль 20: Генераторы и итераторы
- Модуль 21: Регулярные выражения
- Модуль 22: Дата и время
- Модуль 23: Математические операции
- Модуль 24: Работа с сетью
- Модуль 25: Асинхронное программирование
- Модуль 26: Многопоточность
- Модуль 27: Тестирование
- Модуль 28: Базы данных
- Модуль 29: Алгоритмы и структуры данных
- Модуль 30: Продвинутые возможности
Тип данных пустой конструкции
В Python фигурные скобки используются не только для словарей, но и для множеств. Посмотрите на код и определите, какой тип данных будет создан при использовании пустых фигурных скобок.
data = {}
print(type(data))Литерал словаря
Заполните пропуски, чтобы создать словарь `user` с двумя парами «ключ-значение». Обратите внимание на синтаксис разделения ключей и значений, а также элементов между собой.
user = input1S 'login' input2S 'admin' input3S 'active': True input4SДопустимые ключи словаря
Ключом словаря может быть только **неизменяемый** (hashable) тип данных. Распределите предложенные объекты на те, что могут быть ключом, и те, что вызовут ошибку `TypeError`.
Создание через конструктор dict()
Используйте конструктор `dict` для создания словаря с именованными аргументами. Это альтернативный способ создания, где ключи указываются как имена параметров (без кавычек), а значения — через знак равно.
config = input1S(host=input2S, port=input3S)Синтаксис внутри словаря
В коде допущена распространенная ошибка при объявлении словаря через литерал `{}`. Найдите строку с ошибкой и исправьте синтаксис присваивания значения ключу.
product = { 'id': 105, 'price' = 99.99, 'stock': True}Способы создания словарей
Сопоставьте пример кода (слева) с описанием метода создания словаря (справа).
d = {'a': 1, 'b': 2}d = dict(a=1, b=2)d = dict([('a', 1), ('b', 2)])Словарь из списков (zip)
Соберите код, который создает словарь, объединяя два списка: список ключей и список значений. Используйте функцию `zip` внутри конструктора `dict`. Одна строка содержит ошибку использования `zip`.
values = [10, 20]keys = ['x', 'y']my_dict = dict(zip(keys, values))my_dict = zip(dict(keys, values))print(my_dict)Словарь с перезаписью ключей
Посмотрите на код создания словаря. В нем дважды используется ключ `'score'`. Какое значение будет выведено на экран? Введите число.
game_data = {
'player': 'Alex',
'score': 100,
'level': 5,
'score': 150
}
print(game_data['score'])Создание вложенного словаря
Расставьте строки кода так, чтобы создать словарь `database`, содержащий внутри себя другой словарь под ключом `user1`.
database = { 'user1': { 'name': 'Alice', 'role': 'admin' }}