Файл: Словари и кортежи.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.11.2023

Просмотров: 43

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

КРАЕВОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ПРОФЕССИОНАЛЬНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ДАЛЬНЕВОСТОЧНЫЙ ТЕХНИЧЕСКИЙ КОЛЛЕДЖ

Практическая работа

тема: словари и кортежи


dict.clear() - очищает словарь. 5

dict.clear() - очищает словарь. 5

dict.copy() - возвращает копию словаря. 5

dict.copy() - возвращает копию словаря. 5

2. Получение значений из словаря 7

2. Получение значений из словаря 7

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

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

3. Добавление элементов в словарь 8

3. Добавление элементов в словарь 8

4. Изменение элементов словаря 9

4. Изменение элементов словаря 9

10

10

5.Удаление элементов словаря 10

5.Удаление элементов словаря 10

6. Проверка наличия ключа 11

6. Проверка наличия ключа 11

7. Копирование словаря 12

7. Копирование словаря 12

8. Определение длины словаря 13

8. Определение длины словаря 13

9. Итерация словаря 14

9. Итерация словаря 14

9.2 Итерация значений 14

9.2 Итерация значений 14

Вычислим сколько людей проживает в пяти крупнейших городах страны. Применим метод dict.values(), возвращающий список значений словаря: 14

Вычислим сколько людей проживает в пяти крупнейших городах страны. Применим метод dict.values(), возвращающий список значений словаря: 14

9.3 Итерация ключей и значений 15

9.3 Итерация ключей и значений 15

10. Генераторы словарей 15

10. Генераторы словарей 15

11. Вложенные словари 16

11. Вложенные словари 16

12. Альтернативные типы данных 17

12. Альтернативные типы данных 17

13.3. Counter 20

13.3. Counter 20

Counter – подкласс словаря, подсчитывающий объекты хеш-таблицы. Функция возвращает объект Counter, в котором элементы хранятся как ключи, а их количество в виде значений. Эта функция позволяет подсчитать элементы списка: 20

Counter – подкласс словаря, подсчитывающий объекты хеш-таблицы. Функция возвращает объект Counter, в котором элементы хранятся как ключи, а их количество в виде значений. Эта функция позволяет подсчитать элементы списка: 20

13. Создание Pandas DataFrame из словаря 20

13. Создание Pandas DataFrame из словаря 20

13.1. Создание DataFrame из словаря 21

13.1. Создание DataFrame из словаря 21

2.Упаковка 24

2.Упаковка 24

3.Распаковка 25

3.Распаковка 25

4.Обращение к элементу и поиск в кортеже 26

4.Обращение к элементу и поиск в кортеже 26

5.Сравнение 27

5.Сравнение 27

6.Перебор 28

6.Перебор 28

7.Сортировка 29

7.Сортировка 29

8.Удаление 29

8.Удаление 29

30

30

Методы и особые операции 30

Методы и особые операции 30

1.Срез 30

1.Срез 30

2.Длина кортежа 31

2.Длина кортежа 31

3.Конкатенация 32

3.Конкатенация 32

4.Повторение 32

4.Повторение 32

5.Индекс заданного элемента 32

5.Индекс заданного элемента 32

6.Число вхождений элемента 32

6.Число вхождений элемента 32

7.Преобразование 33

7.Преобразование 33

tuple → str 33

tuple → str 33

tuple → list 33

tuple → list 33

Тут всё ещё проще. Для такой конвертации необходимо всего лишь передать кортеж, как аргумент функции list(): 33

Тут всё ещё проще. Для такой конвертации необходимо всего лишь передать кортеж, как аргумент функции list(): 33

tuple → dict 33

tuple → dict 33

8.Именованные кортежи 34

8.Именованные кортежи 34


1.создание словаря……………………………………………………………………………..…5

2. Получение значений из словаря 6

Доступ к значениям словаря. 6

3. Добавление элементов в словарь 7

4. Изменение элементов словаря 8

5.Удаление элементов словаря 9

6. Проверка наличия ключа 10

7. Копирование словаря 11

8. Определение длины словаря 12

9. Итерация словаря 13

9.2 Итерация значений 13

метод dict.values(),: 13

9.3 Итерация ключей и значений 14

10. Генераторы словарей 14

11. Вложенные словари 15

12. Альтернативные типы данных 16

13.3. Counter 18

13. Создание Pandas DataFrame из словаря 19

13.1. Создание DataFrame из словаря 20

2. Упаковка 24

3. Распаковка 24

4. Обращение к элементу и поиск в кортеже 25

5. Сравнение 26

6. Перебор 27

7. Сортировка 28

8. Удаление 29

Методы и особые операции 30

1. Срез 30

2. Длина кортежа 31

3. Конкатенация 31

4. Повторение 31

5. Индекс заданного элемента 32

6. Число вхождений элемента 32

7. Преобразование 32

tuple → str 32

tuple → list 33

аргумент функции list(): 33

tuple → dict 33

8. Именованные кортежи 34

теоретическая часть
Словари – это изменяемые отображения ссылок на объекты, доступные по ключу. Словари представляют собой структуры данных, в которых уникальные ключи отображают значения. Ключ и значение разделяются двоеточием, пары ключ-значения отделяются запятыми, а словарь целиком ограничивается фигурными скобками.

Неупорядоченные коллекции произвольных объектов с доступом по ключу. Их иногда ещё называют ассоциативными массивами или хеш-таблицами.

Уместная аналогия - обычный толковый словарь, где каждому отдельному слову (ключу) соответствует его определение (значение).

Методы словарей

dict.clear() - очищает словарь.

dict.copy() - возвращает копию словаря.


classmethod dict.fromkeys(seq[, value]) - создает словарь с ключами из seq и значением value (по умолчанию None).

dict.get(key[, default]) - возвращает значение ключа, но если его нет, не бросает исключение, а возвращает default (по умолчанию None).

dict.items() - возвращает пары (ключ, значение).

dict.keys() - возвращает ключи в словаре.

dict.pop(key[, default]) - удаляет ключ и возвращает значение. Если ключа нет, возвращает default (по умолчанию бросает исключение).



dict.popitem() - удаляет и возвращает пару (ключ, значение). Если словарь пуст, бросает исключение KeyError. Помните, что словари не упорядочены.

dict.setdefault(key[, default]) - возвращает значение ключа, но если его нет, не бросает исключение, а создает ключ со значением default (по умолчанию None).

dict.update([other]) - обновляет словарь, добавляя пары (ключ, значение) из other. Существующие ключи перезаписываются. Возвращает None (не новый словарь!).

dict.values() - возвращает значения в словаре.
практическая часть
работа со словарями

  1. Создание словаря при помощи dict().

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

>>> students_ages = dict(Amanda=27, Teresa=38, Paula=17, Mario=40)

>>> print(students_ages)

{'Amanda': 27, 'Teresa': 38, 'Paula': 17, 'Mario': 40}
Методы можно комбинировать:

>>> students_ages = dict({'Amanda': 27, 'Teresa': 38}, Paula=17, Mario=40)

>>> print(students_ages)

{'Amanda': 27, 'Teresa': 38, 'Paula': 17, 'Mario': 40}
Другой вариант – использовать список кортежей. Каждый кортеж должен содержать два объекта: ключ и значение.

>>> students_ages = dict([('Amanda', 27), ('Teresa', 38), ('Paula', 17), ('Mario', 40)])

>>> print(students_ages)

{'Amanda': 27, 'Teresa': 38, 'Paula': 17, 'Mario': 40}
Наконец, можно создать словарь, используя два списка. Вначале строим итератор кортежей с помощью функции zip(). Затем используем ту же функцию dict() для построения словаря.

>>> students = ['Amanda', 'Teresa', 'Paula', 'Mario']

>>> ages = [27, 38, 17, 40]

>>> students_ages = dict(zip(students, ages))

>>> print(students_ages)

{'Amanda': 27, 'Teresa': 38, 'Paula': 17, 'Mario': 40}

2. Получение значений из словаря

Для доступа к значениям словаря мы не можем использовать числовой индекс (как в случае со списками или кортежами). Однако схема извлечения значения похожа на индексацию: вместо числа в квадратные скобки подставляется ключ. При попытке получить доступ к значению с помощью несуществующего ключа будет вызвана ошибка KeyError.
Чтобы избежать получения исключения с несуществующими ключами, можно воспользоваться методом dict.get(key[, default]). Этот метод возвращает значение для ключа, если ключ находится в словаре, иначе возвращает значение по умолчанию default. Если значение по умолчанию не задано, метод возвращает None (но никогда не возвращает исключение).

>>> print(population['Munich'])

1471508

>>> print(population[1])


Traceback (most recent call last):

File "", line 1, in

KeyError: 1

>>> print(population['Stuttgart'])

Traceback (most recent call last):

File "", line 1, in

KeyError: 'Stuttgart'

>>> print(population.get('Munich'))

1471508

>>> print(population.get('Stuttgart'))

None

>>> print(population.get('Stuttgart', 'Not found'))

Not found

3. Добавление элементов в словарь


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

>>> products['pillow'] = 10

>>> print(products)

{'table': 120, 'chair': 40, 'lamp': 14, 'bed': 250, 'mattress': 100, 'pillow': 10}
Для добавления нескольких элементов одновременно можно применять метод dict.update([other]). Он обновляет словарь парами ключ-значение из other, перезаписывая существующие ключи.
>>> products.update({'shelf': 70, 'sofa': 300})

>>> print(products)

{'table': 120, 'chair': 40, 'lamp': 14, 'bed': 250, 'mattress': 100, 'pillow': 10, 'shelf': 70, 'sofa': 300}

>>> grades.update(Violeta=5.5, Marco=6.5, Paola=8)

>>> print(grades)

{'Alba': 9.5, 'Eduardo': 10, 'Normando': 3.5, 'Helena': 6.5, 'Claudia': 7.5, 'Violeta': 5.5, 'Marco': 6.5, 'Paola': 8}

>>> population.update([('Stuttgart', 632743), ('Dusseldorf', 617280)])

>>> print(population)

{'Berlin': 3748148, 'Hamburg': 1822445, 'Munich': 1471508, 'Cologne': 1085664, 'Frankfurt': 753056, 'Stuttgart': 632743, 'Dusseldorf': 617280}

Как показано выше, метод update() может принимать в качестве аргумента не только словарь, но и список кортежей или именованные аргументы.

4. Изменение элементов словаря


Изменим значение элемента, обратившись к ключу с помощью квадратных скобок ([]). Для изменения нескольких значений сразу есть метод .update(). Он перезаписывает существующие ключи.

(Увеличим цену предмета на 100 единиц и изменим оценки двух человек.)

>>> print(products)

{'table': 120, 'chair': 40, 'lamp': 14, 'bed': 250, 'mattress': 100, 'pillow': 10, 'shelf': 70, 'sofa': 300}

>>> products['sofa'] = 400

>>> print(products)

{'table': 120, 'chair': 40, 'lamp': 14, 'bed': 250, 'mattress': 100, 'pillow': 10, 'shelf': 70, 'sofa': 400}

>>> print(grades)

{'Alba': 9.5, 'Eduardo': 10, 'Normando': 3.5, 'Helena': 6.5, 'Claudia': 7.5, 'Violeta': 5.5, 'Marco': 6.5, 'Paola': 8}

>>> grades.update({'Normando': 2.5, 'Violeta': 6})

>>> print(grades)

{'Alba': 9.5, 'Eduardo': 10, 'Normando': 2.5, 'Helena': 6.5, 'Claudia': 7.5, 'Violeta': 6, 'Marco': 6.5, 'Paola': 8}

5.Удаление элементов словаря


Для удаления элемента из словаря можно использовать либо del dict[key], либо dict.pop(key[, default]). В первом случае из словаря удаляется соответствующая пара. Или, если такого ключа нет, возвращается KeyError.

>>> print(population)

{'Berlin': 3748148, 'Hamburg': 1822445, 'Munich': 1471508, 'Cologne': 1085664, 'Frankfurt': 753056, 'Stuttgart': 632743, 'Dusseldorf': 617280}

>>> del population['Ingolstadt']

Traceback (most recent call last):

File "", line 1, in

KeyError: 'Ingolstadt'

>>> del population['Dusseldorf']

>>> print(population)

{'Berlin': 3748148, 'Hamburg': 1822445, 'Munich': 1471508, 'Cologne': 1085664, 'Frankfurt': 753056, 'Stuttgart': 632743}

Метод dict.pop(key[, default]) удаляет из словаря элемент с заданным ключом и возвращает его значение. Если ключ отсутствует, метод возвращает значение default . Если значение default не задано и ключа не существует, метод pop() вызовет исключение KeyError.


>>> print(population)

{'Berlin': 3748148, 'Hamburg': 1822445, 'Munich': 1471508, 'Cologne': 1085664, 'Frankfurt': 753056, 'Stuttgart': 632743}

>>> population.pop('Stuttgart')

632743

>>> print(population)

{'Berlin': 3748148, 'Hamburg': 1822445, 'Munich': 1471508, 'Cologne': 1085664, 'Frankfurt': 753056}

>>> print(population.pop('Ingolstadt', 'Value not found'))

Value not found

>>> population.pop('Garching')

Traceback (most recent call last):

File "", line 1, in

KeyError: 'Garching'


6. Проверка наличия ключа


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

>>> print(population)

{'Berlin': 3748148, 'Hamburg': 1822445, 'Munich': 1471508, 'Cologne': 1085664, 'Frankfurt': 753056}

>>> print('Ingolstadt' in population)

False

>>> print('Munich' in population)

True

>>> print('Ingolstadt' not in population)

True

>>> print('Munich' not in population)

False

7. Копирование словаря


Чтобы скопировать словарь, можно использовать метод словаря copy(). Этот метод возвращает поверхностную копию словаря. Мы должны быть осторожны с такими копиями: если словарь содержит списки, кортежи или множества, то в созданной копии будут только ссылки на объекты из оригинала.

>>> students = {'Marco': 173, 'Luis': 184, 'Andrea': 168}

>>> students_2 = students.copy() # поверхностная копия

>>> students_2['Luis'] = 180

>>> print(students)

{'Marco': 173, 'Luis': 184, 'Andrea': 168}

>>> print(students_2)

{'Marco': 173, 'Luis': 180, 'Andrea': 168}

>>> students_weights = {'Marco': [173, 70], 'Luis': [184, 80], 'Andrea': [168, 57]}

>>> students_weights_2 = students_weights.copy()

>>> students_weights_2['Luis'][0] = 180

>>> print(students_weights)

{'Marco': [173, 70], 'Luis': [180, 80], 'Andrea': [168, 57]}

Изменение в списке students_2 затронуло список students, так как список, содержащий вес и рост, содержит ссылки, а не дубликаты. Чтобы избежать этой проблемы, создадим глубокую копию, используя функцию copy.deepcopy(x):

>>> import copy

>>> students_weights = {'Marco': [173, 70], 'Luis': [184, 80], 'Andrea': [168, 57]}

>>> students_weights_2 = copy.deepcopy(students_weights)

>>> students_weights_2['Luis'][0] = 180

>>> print(students_weights)

{'Marco': [173, 70], 'Luis': [184, 80], 'Andrea': [168, 57]}

>>> print(students_weights_2)

{'Marco': [173, 70], 'Luis': [180, 80], 'Andrea': [168, 57]}
При использовании глубокого копирования создается полностью независимая копия.

Важно помнить, что оператор = не создаёт копию словаря. Он присваивает другое имя, но относящееся к тому же словарю, т. е. любое изменение нового словаря отражается на исходном.

>>> fruits = {'Orange': 50, 'Apple': 65, 'Avocado': 160, 'Pear': 75}

>>> fruits_2 = fruits

>>> fruits_2.pop('Orange')

50

>>> print(fruits)

{'Apple': 65, 'Avocado': 160, 'Pear': 75}