Словари

Допустим, у вас есть информация о дате рождения нескольких человек и вы хотите разработать программу, с помощью которой можно находить день рождения того или иного человека. В такой программе можно использовать список, элементы которого - даты рождения. Так как к значению конкретного элемента можно обратиться по его номеру (индексу), то для вывода на экран для рождения нужного вам человека необходимо знать соответствующий номер. Это неудобно и для устранения такого недостатка следует использовать не список, а такую структуру данных как словарь (dict).

Словарь в Python представляет собой совокупность пар "ключ-значение". Каждый ключ связывается с некоторым значением, и программа моет получить значение, связанное с заданным ключом. Значением может быть число, строка, список и даже другой словарь. Собственно, любой объект, создаваемый в программе Python, может стать значением в словаре.

В Python словарь заключается в фигурные скобки {}, в которых приводится последовательность пар "ключ-значение"

student = {'name': 'Василий', 'last_name': 'Иванов'}

Пара "ключ-значение" представляет данные, связанные друг с другом. Если вы укажете ключ, то Python вернет значение, связанное с этим ключом. Ключ отделяется от значения двоеточием, а отдельные пары разделяются запятыми. В словаре может храниться любое количество пар "ключ-значение".

Простейший словарь содержит ровно одну пару "ключ-значение", как в следующем примере

student = {'name': 'Василий'}

В этом словаре хранится ровно один фрагмент информации о студенте, а именно его имя. Строка 'name' является ключом в словаре; с этим ключом связано значение 'Василий'.

Обращение к значениям в словаре

Чтобы получить значение, связанное с ключом, укажите имя словаря, а затем ключ в квадратных скобках

student = {'name': 'Василий'}
print(student['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

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

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

Last updated

Was this helpful?