Словари
Допустим, у вас есть информация о дате рождения нескольких человек и вы хотите разработать программу, с помощью которой можно находить день рождения того или иного человека. В такой программе можно использовать список, элементы которого - даты рождения. Так как к значению конкретного элемента можно обратиться по его номеру (индексу), то для вывода на экран для рождения нужного вам человека необходимо знать соответствующий номер. Это неудобно и для устранения такого недостатка следует использовать не список, а такую структуру данных как словарь (dict).
Словарь в Python представляет собой совокупность пар "ключ-значение". Каждый ключ связывается с некоторым значением, и программа моет получить значение, связанное с заданным ключом. Значением может быть число, строка, список и даже другой словарь. Собственно, любой объект, создаваемый в программе Python, может стать значением в словаре.
В Python словарь заключается в фигурные скобки {}
, в которых приводится последовательность пар "ключ-значение"
Пара "ключ-значение" представляет данные, связанные друг с другом. Если вы укажете ключ, то Python вернет значение, связанное с этим ключом. Ключ отделяется от значения двоеточием, а отдельные пары разделяются запятыми. В словаре может храниться любое количество пар "ключ-значение".
Простейший словарь содержит ровно одну пару "ключ-значение", как в следующем примере
В этом словаре хранится ровно один фрагмент информации о студенте, а именно его имя. Строка 'name'
является ключом в словаре; с этим ключом связано значение 'Василий'
.
Обращение к значениям в словаре
Чтобы получить значение, связанное с ключом, укажите имя словаря, а затем ключ в квадратных скобках
Эта конструкция возвращает значение, связанное с ключом 'name'
из словаря student
.
Добавление новых пар "ключ-значение"
Словари относятся к динамическим структурам данных: в словарь можно в любой момент добавлять новые пары "ключ-значение". Для этого указывается имя словаря, за которым в квадратных скобках следует новый ключ с новым значением.
Добавим в словарь student
еще два атрибута: номер группы и дату рождения.
Окончательная версия словаря содержит четыре пары "ключ-значение".
Создание пустого словаря
В некоторых ситуациях бывает необходимо начать с пустого словаря, а затем добавлять в него новые элементы. Чтобы начать заполнение пустого словаря, определите словарь с пустой парой фигурных скобок, а затем добавляйте новые пары "ключ-значение" (каждая пара в отдельной строке).
Обычно пустые словари используются при хранении данных, введенных пользователем, или при написании код, автоматически генерирующего большое количество пар "ключ-значение".
Изменение значений в словаре
Чтобы изменить значение в словаре, укажите имя словаря с ключом в квадратных скобках, а затем новое значение, которое должно быть связано с этим ключом.
Консоль выведет
Удаление пар "ключ-значение"
Когда информация, хранящаяся в словаре, перестает быть нужной, пару "ключ-значение" можно полностью удалить при помощи команды del
. При вызове достаточно передать имя словаря и удаляемый ключ
Консоль выведет
Обращение к значениям с помощью функции get()
Использование синтаксиса с ключом в квадратных скобках для получения интересующего вас значения из словаря имеет один потенциальный недостаток: если запрашиваемый ключ не существует, то вы получите сообщение об ошибке.
Консоль выведет
Чтобы избежать закрытия программы и вывода сообщения об ошибке, можно воспользоваться функцией get()
для назначения значения по умолчанию, которое будет возвращено при отсутствии заданного ключа в словаре.
В первом аргументе метода get()
передается ключ. Во втором необязательном аргументе можно передать значение, которое должно возвращаться при отсутствии ключа:
Если ключ 'group'
существует в словаре, вы получите соответствующее значение, если нет - будет получено значение по умолчанию. В данном случае ключ 'group'
не существует, поэтом вместо ошибки выводится понятное сообщение.
Если есть вероятность того, что запрашиваемый ключ не существует, возможно, стоит использовать метод get()
вместо синтаксиса с квадратными скобками.
Если второй аргумент при вызовет get()
опущен, а ключ не существует, то Python вернет специальное значение None
- признак того, что значение не существует.
Перебор словаря
Словарь Python
Элементы словаря состоят из двух компонентов. Первый называется "ключ", второй - "значение". Аналогами словаря в Python являются различные "жизненные" словари (толковые, орфографические, лингвистические и так далее). В них ключом является слово - заголовок статьи, а значением - сама статья. Для того, чтобы получить доступ к статье, необходимо указать слово - ключ.
Простейшие примеры информации, которую в программе удобно хранить в виде словаря:
имя человека и дата его дня рождения;
номер авиарейса и аэропорт назначения;
название государства и его столица.
Ключом в словаре Python может быть любой так называемый "неизменяемый тип" данных, к которому относится число, символьная строка или кортеж (неизменяемый список).
Словарь - структура данных, предназначенная для объединения взаимосвязанной информации. Доступ к элементам словаря осуществляется не по индексу, а по ключу. В качестве ключа можно указать любой неизменяемый объект, например: число, строку или кортеж. Элементы словаря могут содержать элементы произвольного типа данных и иметь неограниченную степень вложенности.
До версии Python 3.6 порядок элементов в словаре был произвольным. Начиная с версии 3.6, элементы в словаре располагаются в порядке добавления их в словарь.
https://docs.python.org/3/whatsnew/3.6.html#whatsnew36-compactdict
Чтобы получить элемент, необходимо указать ключ, который использовался при сохранении значения.
Основные характеристики словарей Python
Они поддерживают доступ по ключу, а не по смещению - словари временами называют ассоциативными
массивами
илихешами
. Они ассоциируют набор значений с ключами, так что извлекать элемент из словаря можно с помощью ключа, под которым он был первоначально сохранен. Для получения компонентов из словаря применяется та же операция индексации, что и в случае списка, но индекса принимает форму ключа, а не относительного смещения.Они являются неупорядоченными коллекциями произвольных данных - в отличие от списка элементы, хранящиеся в словаре, не поддерживают какой-то определенный порядок; на самом деле для обеспечения быстрого поиска Python сохраняет их в псевдослучайном порядке. Ключи представляют символические (не физические) позиции элементов в словаре.
Last updated