Close

Урок 16. Словари

Помимо списков и кортежей в языке python существует еще один удобный и часто используемый тип данных для работы с коллекциями объектов — словарь. В отличие от вышеупомянутых типов данных для словаря не важен порядок элементов. Данные хранятся в словаре в виде пар ключ-значение. Каждый ключ связан с определенным значением. Давайте посмотрим пример использования словаря для хранения телефонной книги:

Ключи в этом примере — это имена людей, а значения — их номера телефонов. Ключ отделяется от значения двоеточием, а сами пара отделяются друга запятыми. Сами словари ограничиваются фигурными скобками, {}.

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

Для получения какого-либо значения достаточно знать его ключ и указать его в квадратных скобках после имени словаря:

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

В словаре не может содержаться два одинаковых ключа. Если бы такое было возможно, то python не мог определить какое именно значение из нескольких мы хотим получить. Если мы попытаемся добавить в словарь ключ, который уже присутствует — то старое значение будет заменено новым.

Для удаления элемента словаря применяется функция del().

Часто может понадобиться запуск цикла по ключам словаря. Получить все ключи и сделать из них список нам поможет метод keys().

Проверить наличие ключа в словаре мы можем с помощью ключевого слова in:

Если нужно сделать что то с каждым элементом словаря, то существует возможность перебрать весь словарь полностью. Конструкция for x in dictionary дает такую возможность.

Выражение x in dictionary часто используется в условном операторе if (ссылку тут), например, до того, как мы хотим получить значения по ключу. Если нужного нам ключа не существует, то мы увидим ошибку.

Чтобы получить доступ к ключам в сортированном порядке, мы можем использовать функция sorted().

Не следует забывать, что sorted() не изменяет порядок следования ключей в исходном словаре.

Словарь — очень гибкая структура данных и могут хранить не только строки. Необязательно, даже чтобы ключ со значением были одного типа. Значением может являться любая структура данных, но ключом — только неизменяемый объект. Например, мы можем сделать целочисленное значение ключом в словаре, но не сможет сделать ключом список.

Значениями в словаре могут быть и другие словари. Чтобы продемонстрировать это добавим в нашу телефонную книгу уточнение: домашние и рабочие номера.

Чтобы получить конкретный номер телефона мы должны запросить contacts[«Maxim»][«cell»]. А выбирая contacts[«Maxim»] , мы получаем весь словарь, относящийся к этому ключу.

Существуют еще два альтернативных способа создания словарей, которые могут вам пригодиться в определенных ситуациях.
Если вы хотите использовать в ключах словаря строки, состоящие только из букв и цифр, то можете создавать словарь с помощью функции dict() следующим образом:

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

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

 
Итак, резюмируем.

Списки удобны, если:
1. Вы оперируете со смешанным набором данных.
2. Ваши данные должны быть упорядочены.
3. Ваши данные могут изменяться.
4. Вы используете очереди или стеки.

Кортежи следует использовать, когда:
1. Данные не нужно изменять.
2. Производительность кода очень важна.

Словари незаменимы:
1. Данные представляемы в виде пар ключ-значение.
2. Вам необходим быстрый доступ к данным.
3. Данные изменяются.

Поделиться: