Словари_taxxCz

Содержание

Слайд 2

Словари

Важным типом данных являются словари. Словарь можно представить в виде некоторого списка,

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

Слайд 3

Словари

Создать словарь можно с использованием фигурных скобок: в блоке из этих скобок

Словари Создать словарь можно с использованием фигурных скобок: в блоке из этих
указываются через запятую выражения вида «ключ: значение», которые определяют ключи и соответствующие им значения в словаре.

Слайд 4

Словари

Также для создания словаря используется функция dict(). Если ключами словаря являются текстовые

Словари Также для создания словаря используется функция dict(). Если ключами словаря являются
значения, то в качестве аргументов функции dict() могут передаваться конструкции вида «ключ = значение». Такие выражения разделяются запятыми. В этом случае создается словарь, в котором ключи и значения определяются аргументами, переданными функции.

Слайд 5

Подробности

Ключи в таком случае (хотя они являются текстовыми) указываются без кавычек. Причина

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

Слайд 6

На заметку

Вызов функции dict() без аргументов приводит к созданию пустого словаря. Пустой

На заметку Вызов функции dict() без аргументов приводит к созданию пустого словаря.
блок из фигурных скобок {} также соответствует пустому словарю (не множеству). Как и в случае со списками, кортежами и множествами, количество элементов в словаре можно определить с помощью функции len().

Слайд 7

Словари

Если словарь создан, то доступ к значению из этого словаря можно получить

Словари Если словарь создан, то доступ к значению из этого словаря можно
по ключу. Доступ выполняется в формате «словарь [ключ]» - то есть после имени словаря в квадратных скобках указывается ключ для доступа к соответствующему значению. Небольшая программа, в которой создаются словари, представлена скрином ниже:

Слайд 8

Создание словаря

Создание словаря

Слайд 9

Операции со словарями

Операции со словарями

Слайд 10

Создадим второй словарь

Создадим второй словарь

Слайд 11

Операции со вторым словарём

Операции со вторым словарём

Слайд 12

Всё о первом словаре

В программе создается два словаря, и с этими словарями

Всё о первом словаре В программе создается два словаря, и с этими
выполняются несложные операции. Первый словарь создается командой nums={100:«сотня", 1:"единица",10:”десятка”}. В этом словаре три элемента. Их ключи — это целые числа 1, 10 и 100, а значения элементов соответственно равны “единица”, “десятка”, “сотня”. Для получения значения элемента словаря после имени словаря в квадратных скобках указывается ключ соответствующего элемента: например, nums[1], nums[10] и nums[100].

Слайд 13

Всё о первом словаре

В данном случае считывается значение элемента. В таком же

Всё о первом словаре В данном случае считывается значение элемента. В таком
формате элементу можно присвоить новое значение – примером может служить команда nums[10] = “десять”.
Если указать ключ, которого в словаре нет, то в словарь будет добавлен новый элемент с таким ключом. Например, при выполнении команды nums[3] = “тройка” в словаре nums появляется элемент с ключом 3 и значением “тройка” в словаре nums появляется элемент с ключом 3 и значением “тройка”. Для удаления элемента с определённым ключом можно использовать метод pop().

Слайд 14

Всё о первом словаре

Еще один словарь создаётся командой order = dict(Первый =

Всё о первом словаре Еще один словарь создаётся командой order = dict(Первый
1, Третий = 3, Последний = 10). Ключами в данном случае являются текстовые значения “Первый”, “Третий”, “Последний”, а элементы имеют значения 1, 3 и 10 соответственно.

Слайд 15

На заметку

Еще раз обращаем внимание, что текстовые значения для ключей при создании

На заметку Еще раз обращаем внимание, что текстовые значения для ключей при
словаря указываются без кавычек. Однако когда выполняется обращение к элементу, то кавычки для текстовых ключей указываются.

Слайд 16

Словари

Для считывания значений элементов словаря используем команды order[“Первый”], order[“Третий”] и order[“Последний”].
Командой order

Словари Для считывания значений элементов словаря используем команды order[“Первый”], order[“Третий”] и order[“Последний”].
[“Последний”] = 12 элементу с ключом “Последний” присваивается значение 12. Командой del order [“Третий”] из словаря удаляется элемент с ключмо “Третий”. А вот при выполнении команды order [“Пятый”] = 5 значение присваивается элементу с ключом “Пятый”, которого в словаре нет. В результате выполнения команды такой элемент в словаре появляется.

Слайд 17

Словари

Описанные выше способы создания словарей не являются исчерпывающими. Так, функции dict() в

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

Слайд 18

Еще операции со словарями

Еще операции со словарями

Слайд 19

Еще операции со словарями

Еще операции со словарями

Слайд 20

Еще операции со словарями

Первый словарь создаётся командой age = dict([["Кот Кот", 5],

Еще операции со словарями Первый словарь создаётся командой age = dict([["Кот Кот",
["Пёс Пёс", 10], ["Кабан Кабан", 15]]).
В этой команде мы передаём аргументом функции dict() список элементами которого являются списки ([["Кот Кот", 5], ["Пёс Пёс", 10], ["Кабан Кабан", 15].
Первый элемент в каждом из этих списков определяет ключ элемента словаря, а второй элемент в списке определяет значение элемента словаря.

Слайд 21

На заметку

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

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

Слайд 22

На заметку

Для каждого словаря с помощью метода keys() можно получить итерируемый объект,

На заметку Для каждого словаря с помощью метода keys() можно получить итерируемый
позволяющий определить значения ключей из словаря. Методом values() возвращается итерируемый объект, позволяющий получить значения элементов из словаря.

Слайд 23

Подробности

Итерируемый объект не является последовательностью в прямом смысле этого понятия. Но это

Подробности Итерируемый объект не является последовательностью в прямом смысле этого понятия. Но
объект, который, как и последовательность, можно перебирать. Поэтому во многих ситуациях итерируемый объект используется так, как если бы это была последовательность вроде списка.
Что касается метода keys(), то результатом он возвращает итерируемый объект класса dict_keys. Метод values() результатом возвращает итерируемый объект класса dict_values. Классы и объекты обсуждаются в одной из следующих глав.

Слайд 24

Операции с словарями

В операторе цикла for переменная s принимает значения ключей из

Операции с словарями В операторе цикла for переменная s принимает значения ключей
словаря age (для получения набора ключей использована инструкция age.keys()). Для каждого заданного значения s выполняется команда print(s+":", age[s]), которой отображается значение ключа и значение соответствующего элемента словаря.

Слайд 25

Операции с словарями

В следующем операторе цикла for перебираются значения элементов словаря. Переменная

Операции с словарями В следующем операторе цикла for перебираются значения элементов словаря.
v принимает значения из последовательности ключей (вычисляется инструкцией age.values()). Команда print(v, end=" ") отображает значения элементов из словаря, при этом в качестве разделителя используются пробелы.

Слайд 26

Операции с словарями

Еще один словарь создаётся командой color = dict([[(225, 0, 0),

Операции с словарями Еще один словарь создаётся командой color = dict([[(225, 0,
"Красный"], [(0, 225, 0), "Зелёный"], [(0, 0, 225), "Синий"]]). В качестве аргумента функции dict() передан список, элементами которого являются списки [(225, 0, 0), "Красный"], [(0, 225, 0), "Зелёный"], [(0, 0, 225), "Синий"]. Примечательно здесь то, что ключами являются кортежи (225, 0, 0), "Красный"], [(0, 225, 0), "Зелёный"], [(0, 0, 225), "Синий"].
Значения элементов словаря — текстовые значения с названиями цвета (соответственно “Красный”, “Зелёный” и “Синий”).

Слайд 27

На заметку

Мы воспользовались тем, что в формате RGB (сокращение от Red Green

На заметку Мы воспользовались тем, что в формате RGB (сокращение от Red
Blue) цвет задается с помощью трех целых чисел, каждое в диапазоне от 0 до 255 включительно.

Слайд 28

На заметку

При обращении к элементам словаря можно, как мы уже делали ранее,

На заметку При обращении к элементам словаря можно, как мы уже делали
указывать ключ в квадратных скобках после названия словаря (например, как в командах color[(255,0,0)] и color[(255,255,0)]). Такой же подход использован в команде color[(255,255,0)]=“Жёлтый” которой в словарь добавляется новый элемент (поскольку указан ключ, который на момент выполнения команды в словаре не представлен).

Слайд 29

На заметку

Однако для получения значения элемента по ключу можно использовать метод get(),

На заметку Однако для получения значения элемента по ключу можно использовать метод
при вызове которого ключ передается в качестве аргумента (примером служит команда color.get((0,255,0))). Методу можно передать второй аргумент, который будет возвращаться в качестве результата, если ключа, указанного первым аргументом, в словаре нет. Например, результатом выражения color.get ((0, 0, 255), “Белый”) является значение “Синий” элемента с ключом (0, 0, 255).
Но элемента с ключом (255, 255, 255) в словаре нет, поэтому результатом выражения color.get((255, 255, 255), “Белый”) является значение “Белый”.

Слайд 30

Подробности

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

Подробности Если при обращении к элементу словаря в квадратных скобках указать несуществующий
это приведет к ошибке класса KeyError. Если доступ к элементу осуществляется с помощью метода get() и аргументом методу передается один аргумент, определяющий значение ключа, то результатом возвращается значение соответствующего элемента. Если указан несуществующий ключ, то результатом возвращается значение None, и ошибка при этом не возникает.

Слайд 31

Подробности

Как и в случае со списками, кортежами и множествами, для создания словарей

Подробности Как и в случае со списками, кортежами и множествами, для создания
можно использовать генераторы последовательностей. Небольшой пример того, как это можно было бы сделать, представлен в листинке кода ниже:

Слайд 32

Еще пара мегаопераций

Еще пара мегаопераций

Слайд 33

Еще пара мегаопераций

В данном случае создается три словаря, причем два из них

Еще пара мегаопераций В данном случае создается три словаря, причем два из
одинаковые. Более конкретно, мы создаем список days с текстовыми значениями для ключей. Словарь week создается с использованием генератора последовательности: элемент словаря формируется инструкцией days[s]: s, где переменная s пробегает значения от 0 до величины len(days)-1 (количество элементов в списке days минус 1). Выражение days[s]: s означает, что при заданном значении s ключ элемента определяется элементом списка days[s], а значение элемента словаря при этом равно s.

Слайд 34

Еще пара мегаопераций

Аналогичный словарь myweek создается несколько иначе. Элемент словаря формируется выражением

Еще пара мегаопераций Аналогичный словарь myweek создается несколько иначе. Элемент словаря формируется
d: days.index(d), а переменная d принимает значения из списка days. Значение переменной задает ключ элемента словаря, а в качестве значения элемента словаря указано выражение days.index(d). Это индекс элемента со значением d в списке days. В итоге мы создаем два одинаковых словаря week и myweek, в чем и убеждаемся при проверке.

Слайд 35

Еще пара мегаопераций

Еще один словарь состоит из числовых значений: ключами элементов являются

Еще пара мегаопераций Еще один словарь состоит из числовых значений: ключами элементов
нечетные натуральные числа, а значением элементов является квадрат соответствующего числа. Словарь создается командой sqrs={k: k**2 for k in range(1,11) if k%2!=0}. Элемент словаря определяется выражением k: k**2, а переменная k пробегает значения из диапазона от 1 до 10 включительно, причем в словарь соответствующий элемент добавляется, только если истинно условие k%2!=0 (остаток от деления значения k на 2 не равен нулю — то есть число нечетное).

Слайд 36

Операции со словарями

В первую очередь остановимся на способах создания копии словаря. Причём

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

Слайд 37

Операции со словарями

В первую очередь остановимся на способах создания копии словаря. Причём

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

Слайд 38

Операции со словарями

Операции со словарями

Слайд 39

Операции со словарями

Операции со словарями

Слайд 40

Операции со словарями

Операции со словарями

Слайд 41

Операции со словарями

Это простая программа, в которой создаётся словарь A с тремя

Операции со словарями Это простая программа, в которой создаётся словарь A с
элементами (команда A = {“Начальный”:1, “Средний”:2, “Последний”:3}).
Затем командами B=dict(A) и C=A.copy() на основе словаря A создаются словари-копии. Еще один словарь D создается на основе словаря A, но на этот раз речь не идет о копии. Словарь создается командой D={k: v*10 for k, v in A.items()}. Здесь мы используем генератор последовательности, причем в качестве перебираемого множества указано выражение A.items(). Метод items() возвращает итерируемый объект класса dict_items. В качестве «элементов» этого итерируемого объекта возвращаются кортежи, состоящие из двух элементов: ключ элемента словаря и значение элемента словаря.

Слайд 42

Операции со словарями

В операторе цикла указаны через запятую две переменные, k и

Операции со словарями В операторе цикла указаны через запятую две переменные, k
v. Поэтому переменная k в качестве значения получает ключ элемента словаря, а переменная v принимает значение соответствующего элемента словаря.

Слайд 43

Подробности

Методы items(), keys() и values() результатом возвращают итерируемые объекты. Чтобы получить на

Подробности Методы items(), keys() и values() результатом возвращают итерируемые объекты. Чтобы получить
основе этих итерируемых объектов списки, результат вызова данных методов следует передать аргументом функции list(). В результате получим список, который обрабатывается по правилам работы со списками. Аналогично можно воспользоваться функциями tuple() и set() для создания на основе итерируемого объекта соответственно кортежа и множества. Более того, если результат вызова метода items() передать в качестве аргумента функции dict(), то в результате получим копию словаря, из которого вызывался метод items().

Слайд 44

Подробности

На следующем этапе перебираются элементы словаря A. Причем мы использовали оператор цикла,

Подробности На следующем этапе перебираются элементы словаря A. Причем мы использовали оператор
в котором переменная k перебирает значения из словаря A. Важно то, что в этом случае переменная k принимает значения ключей из словаря A. Поэтому при выполнении команды A[k]*=100 значения элементов из словаря A умножаются на 100. Причем проверка показывает, что изменение содержимого словаря A не влияет на содержимое словарей B, C и D.
Имя файла: Словари_taxxCz.pptx
Количество просмотров: 14
Количество скачиваний: 0