Что такое словарь?
До сих пор в каждой переменной у нас было одно значение, например число или текст, либо список однотипных значений, например имён ваших друзей. В этом уроке вы познакомитесь со словарями. Словарь хранит вместе несколько значений, которые описывают одну вещь, и даёт каждому из них имя.
Представьте, что вы хотите записать несколько фактов о человеке: его имя, возраст и город. Можно сохранить их в отдельных переменных:
name = "Анна"
age = 21
city = "Москва"Для одного человека это работает, но для десяти понадобится тридцать переменных, и ничто в коде не скажет, какие из них относятся друг к другу. Можно вместо этого положить значения в список:
person = ["Анна", 21, "Москва"]Теперь они вместе, но придётся помнить, что индекс 0 — это имя, а индекс 2 — город. А что такое person[1]? Код этого не говорит.
Словарь решает обе проблемы. Он хранит значения вместе и даёт каждому из них имя:
person = {"name": "Анна", "age": 21, "city": "Москва"}Словарь записывается в фигурных скобках { }. Внутри находятся пары «ключ — значение», разделённые запятыми. Ключ — это имя значения: "name", "age", "city". Обычно это текст, поэтому он в кавычках. После ключа идёт двоеточие, а затем значение, которым может быть что угодно из того, что вы знаете: текст, число, True или False, даже список.
Почему «словарь»? Он работает как настоящий словарь: вы ищете слово (ключ) и находите, что оно означает (значение).
Длинный словарь легче читать, когда каждая пара на отдельной строке. Оба способа означают одно и то же. Когда вы выводите словарь, Python показывает его в одной строке, а текст в одинарных кавычках, как и со списками. Пары остаются в том порядке, в котором вы их записали:
person = {
"name": "Анна",
"age": 21,
"city": "Москва"
}
print(person){'name': 'Анна', 'age': 21, 'city': 'Москва'}Не соединяйте словарь с текстом через +; это не работает, как и с числом. "Человек: " + person завершается ошибкой TypeError: can only concatenate str (not "dict") to str. Вместо этого разделите их запятой, print("Человек:", person), или используйте f-строку.
Типичные ошибки при записи словаря:
- Пропущенная запятая между двумя парами:
{"name": "Анна", "age": 21 "city": "Москва"}завершается ошибкойSyntaxError: invalid syntax. Perhaps you forgot a comma? - Ключ без кавычек:
{name: "Анна"}. Python думает, чтоname— это переменная, и программа завершается ошибкойNameError: name 'name' is not defined. =вместо двоеточия:{"name" = "Анна"}завершается ошибкойSyntaxError: cannot assign to literal here. Maybe you meant '==' instead of '='?Сообщение не очень помогает (вы ведь тоже не имели в виду==), поэтому запомните его: увидев такое, ищите=внутри фигурных скобок.
Задание
- 1
Удалите три переменные и
print(). Вместо них создайте переменнуюpetсо словарём из таких пар, именно в таком порядке:"name"со значением"Рекс","species"со значением"собака","age"со значением3и"vaccinated"со значениемTrue. Выведите его с помощьюprint(pet). Вывод должен быть{'name': 'Рекс', 'species': 'собака', 'age': 3, 'vaccinated': True}. - 2
Ниже выведите словарь ещё раз, теперь с подписью
Питомец:перед ним. Новая строка должна бытьПитомец: {'name': 'Рекс', 'species': 'собака', 'age': 3, 'vaccinated': True}.