Добавлен: 26.10.2023
Просмотров: 70
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Министерство образования и науки Российской Федерации
ФГБОУ ВО «Финансовый университет при Правительстве РФ»
Департамент Анализа Больших Данных и Машинного Обучения
Реферат
по дисциплине «Алгоритмы и структуры данных в языке Python»
на тему:
Словарь в языке Python
Выполнил: студент гр. ПИ22-4
Беспалая А.В.
Проверил:
Шананин В.А.
Москва
2023
Оглавление
Введение 2
Понятие словаря в Python 3
Создание словарей в Python 4
Ключи словаря в Python 9
Доступ к элементам словаря в Python 11
Операторы словарей в Python 12
Функции и методы словарей в Python 13
Представления словарей в Python 15
Вывод 17
Список Литературы 18
Введение
Различные языки программирования обычно доминируют в какой-то отрасли (или нескольких), для работы в которой они хорошо подходят. Но это не значит, что программист ограничен использовать строго определённый инструмент, поэтому любой язык общего назначения, такой как Python, может применять для создания чего-угодно.
Python смог захватить малую часть рынка веб-разработки, иногда используется для написания десктопных приложений и, конечно, тотально доминирует в сфере машинного обучения. Кроме того, на нём создаётся много прототипов, которые позволяют быстро набросать функционал и внешний вид будущего проекта.
В целях лучшего изучения языка Python целесообразно изучить такую структуру данных, как словарь. В повседневном программировании их используют достаточно часто, поэтому не стоит пренебрегать таким полезным инструментом.
Словари в основном используются, когда необходимо создать гибкую структуру данных, обеспечивающую возможность быстрого поиска. Словари также используются как объект сопоставления, которые сопоставляют значения с произвольными объектами.
Понятие словаря в Python
Помимо упорядоченных коллекций объектов в виде строк, списков и кортежей, в Python имеются и неупорядоченные коллекции объектов, знакомство с которыми мы начнем со словарей.
Словарь (от англ. dictionary) – это именованная изменяемая неупорядоченная коллекция объектов произвольного типа. Сами объекты называются элементами словаря, а доступ к ним может быть получен при помощи ключей словаря. Иногда словари еще называют ассоциативными массивами или хешами.
Так же как и списки, словари нам нужны для хранения произвольных объектов. Однако, если в списках мы используем для доступа к ним целочисленные индексы, которые определяют позицию элемента в последовательности, то в словарях это делается при помощи ключей, представляющих собой некоторые неизменяемые значения (например, числа, строки или кортежи), которые позволяют однозначно идентифицировать элементы словаря (см. пример №1).
Пример №1
Как видим, оба вида коллекций позволяют хранить объекты и в нужный момент получать к ним доступ для использования. Более того, как и списки, словари могут изменяться непосредственно и допускают возможность хранения объектов произвольного типа любого уровня вложенности. Однако словари – это неупорядоченные коллекции, поэтому к ним не применимы операции, которые основаны на использовании фиксированного порядка следования элементов (например, конкатенация или извлечение среза).
Создание словарей в Python
Для того, чтобы создать литерал словаря в Python, нужно внутри фигурных скобок через запятую перечислить пары «ключ: значение», отделив ключи от значений двоеточием (см. пример №2). В случае необходимости последний элемент словаря также разрешается завершать запятой. Это никак не повлияет на количество элементов словаря, а значит и его длину.
Как видим, внутри словарей разрешается использовать объекты любого типа данных, создавая при этом любые их комбинации и уровни вложенности. А благодаря наличию в синтаксисе фигурных скобок, сложные и объемные литералы словарей можно без проблем записывать на нескольких строках, придавая исходному коду удобочитаемый вид.
Создать словарь можно также при помощи встроенного конструктора типа dict(). Если использовать его без аргументов, то он вернет нам пустой словарь {}. Если передать конструктору через запятую пары key_name_1 = val_1, key_name_2 = val_2, ..., то на выходе получим словарь с целевыми элементами {'key_name_1': val_1, 'key_name_2': val_2, ...}, в котором
ключами будут строки с переданными именами, т.е. допустимыми в Python идентификаторами. Также можно передавать конструктору список с кортежами пар значений [(key_1, val_1), (key_2, val_2), ...], первое из которых станет ключом, а второе элементом словаря. Например, инструкции dict(one = 1, two = 2) и dict([('one', 1), ('two', 2)]) в обоих случаях вернут словарь {'one': 1, 'two': 2} (см. пример №3).
Обратите внимание, что при передаче в конструктор пар «имя_ключа = значение» в качестве ключей используются допустимые в Python идентификаторы, а не строки. Поэтому их в кавычки брать не нужно. Во втором же варианте можно использовать любые допустимые ключи, т.е. не только строки, но и, например, числа или кортежи.
Опять же, для создания словарей в Python могут использоваться генераторы словарей, которые применяют выражение к каждому элементу передаваемых итерируемых объектов и на основе их вычисления возвращают готовые словари с элементами (см. пример №4).
Таким образом, в простейшем случае для генерации словаря нужно в фигурных скобках через двоеточие написать выражения, которые будут применяться к каждому генерируемому ключу и/или элементу, и через пробел прописать соответствующий заголовок цикла for без завершающего двоеточия.
Встроенная функция range(start, stop[, step]) в примере принимает в качестве аргументов целые числа от start до stop (не включая данный предел) с необязательным шагом step, а возвращает итератор с последовательностью чисел из заданного диапазона. Поскольку итератор представляет собой специальный объект, который возвращает свои элементы по одному за раз, а не все сразу, как кортежи или списки, это позволяет экономить оперативную память, в особенности, если элементов очень много. Если все таки нужен не итератор, а сразу список или кортеж, можно использовать соответствующий конструктор. Например, list(range(3)) вернет список [0, 1, 2], list(range(1, 3)) вернет список [1, 2], list(range(1, 7, 2)) вернет список [1, 3, 5], list(range(7, 2, -2)) вернет список [7, 5, 3] и т.д. Позже мы разберем эту функцию подробнее.
Но и это еще не все, для создания словарей в Python можно использовать специальный метод класса dict.fromkeys(iterable[, value])
, который возвращает словарь, использующий в качестве своих ключей элементы итерируемого объекта iterable, а в качестве их значений второй необязательный параметр value, который по умолчанию принимается за None (см. пример №5).
Ключи словаря в Python
В качестве ключей словаря в Python могут использоваться только объекты неизменяемых типов данных, т.к. они позволяют однозначно идентифицировать элементы словаря. Сюда относятся числа, строки, кортежи с неизменяемыми элементами, фиксированные множества, None, логические значения и другие неизменяемые типы данных (см. пример №6).
Как видим, главным условием использования объектов в качестве ключей словаря является их неизменяемость. Использовать, например, списки или кортежи с изменяемыми элементами не получится.
Кроме того, в словаре нельзя использовать один и тот же ключ для нескольких элементов. Ошибки интерпретатор не выдаст, но доступен будет только один из таких элементов. В то же время один и тот же объект вполне может быть доступен по разным ключам (см. пример №7).
Не используйте в качестве ключей одновременно 0 и False (интерпретатор считает это значение нулем), а также 1 и True (интерпретатор считает его единицей). К этой особенности мы еще вернемся, когда будем рассматривать логический тип данных.
Доступ к элементам словаря в Python
После того, как словарь будет создан, доступ к его элементам можно получать при помощи соответствующих ключей, которые нужно указывать в квадратных скобках после имени или литерала словаря (см. пример №8).
Как видим, цепочка доступа к конкретному элементу словаря может быть довольно длинной. Более того, она может включать не только квадратные скобки с ключами для доступа к элементам словарей, но и квадратные скобки с индексами для доступа к элементам списков, строк, кортежей или даже точки для доступа к атрибутам объектов.
Что касается извлечения не одного, а сразу целого диапазона элементов, то для словарей такая операция не предусмотрена, т.к. словари являются неупорядоченными коллекциями объектов.
Изменяемость словарей означает, что мы можем не только получать доступ к элементам словарей, но также изменять их значения, добавлять в словарь новые элементы или вообще удалять их. Так изменить значение целевого элемента можно найдя его в словаре по ключу и присвоив ему новое значение. Если же указываемый ключ в словаре будет отсутствовать, интерпретатор не выдаст ошибки, а просто добавит в словарь еще один новый элемент (см. пример №9).
Операторы словарей в Python
Поскольку словари относятся к неупорядоченным коллекциям объектов, операторы +, +=, * и *= с ними не используются.
Что касается оператора проверки на вхождение in, то применительно к словарям он совершает поиск переданного ключа (левый операнд) среди ключей целевого словаря (правый операнд). В случае успеха операция возвращает True, иначе – False (см. пример №10).
Применим к словарям и оператор цикла for, но словарь он обходит не по элементам, а по их ключам (см. пример №11).
Поскольку словари относятся к изменяемым коллекциям объектов произвольного типа, их элементы мы можем как добавлять, так и удалять. Последнюю операцию довольно просто выполнять при помощи знакомого нам оператора удаления del (см. пример №12).
Поскольку словари относятся к неупорядоченным коллекциям объектов, изменять их размер во время итерации нельзя, т.к. интерпретатор выдаст ошибку.
Функции и методы словарей в Python
Теперь давайте рассмотрим имеющиеся у словарей методы. При этом не будем забывать, что словари относятся к изменяемым коллекциям объектов, поэтому многие методы словарей изменяют их непосредственно, а не возвращают измененную копию.