Посмотреть все уроки курса
Выбрать другой урок из курса
Поиск по сайту
Теория урока

29. Методы словарей и функция len() в Python

Оглавление урока

Введение

В уроке 7.5. разобрались с внутренним устройством словарей и научились их сортировать. Вы уже неплохо разбираетесь в методах списков и знаете пару основных методов словарей. Давайте углубим знания и познакомимся с оставшимися основными методами словарей и общей для всех итерируемых объектов функцией len().

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

Если вы забыли, как создаются словари, добавляются элементы и как к ним обращаются в Python, вернитесь к уроку 7.1. на пару секунд, чтобы освежить знания. Для начала создадим словарь:

Пример
numbers = {'One': 1, 'Two': 2, 'Four': 4, 'Three': 3}

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

Пример
del numbers['One']

Так же удалить элемент можно при помощи метода pop(), который удаляет ключ и возвращает значение:

Пример
numbers.pop('One') # => 1

Если ключа не существует, то будет выброшено исключения KeyError. Про исключения поговорим в уроке 10.5. Метод pop() имеет второй необязательный параметр, который будет возвращаться, если ключа не существует. Например, выведем слово Empty, если такого ключа нет:

Пример
numbers.pop('Five', 'Empty')

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

Пример
numbers = {'One': 1, 'Two': 2, 'Four': 4, 'Three': 3}
numbers.get('Five', 'Empty') # => Empty

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

Пример
numbers.popitem() # => ('Three', 3)

Вернемся к ключевому слову del. При помощи его можно удалить не только ключ, но и весь словарь.

Пример
del numbers
print(numbers)

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

Чтобы очистит словарь, то есть удалить все элементы в нем, используйте метод clear().

Пример
numbers.clear()

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

Пример
numbers = {'One': 1, 'Two': 2, 'Four': 4, 'Three': 3}

a = numbers
a['One'] = 5

numbers # => {'One': 5, 'Two': 2, 'Four': 4, 'Three': 3}

При изменении элементов нового словаря, вы будете менять на самом деле элементы старого словаря. Чтобы такого не происходило, используйте метод copy():

Пример
a = numbers.copy()

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

Пример
name = ('Иванов', 'Петров', 'Сидоров')
age = 30
dict_name = dict.fromkeys(name, age)
dict_name # => {'Иванов': 30, 'Петров': 30, 'Сидоров': 30}

С методом setdefault() вы уже познакомились в уроке 7.1, поэтому можете вернуться, чтобы его вспомнить.

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

Пример
numbers = {'One': 1, 'Two': 2, 'Four': 4, 'Three': 3}
numbers_new = {'One': 6, 'Five': 5}
numbers.update(numbers_new) # => None
numbers # => {'One': 6, 'Two': 2, 'Four': 4, 'Three': 3, 'Five': 5}

Функция len()

До этого момента мы ни разу не говорили про функцию len(), которая возвращает количество элементов в итерируемом объекте (строка, список, словарь и т.д.):

Пример
# словарь
d = {4: 5, 1: 1, 3: 12, 2: 3}
len(d) # => 4

# строка
s = "Hello"
len(s) # => 5

Как вариант (не самый лучший, конечно), функцию len() можно использовать в конструкции for для перебора элементов:

Пример
s = "Hello"
for i in range(len(s)):
print(s[i])

В этом уроке мы познакомились с оставшимися, ранее не затронутыми, методами словарей в Python и впервые узнали о функции len() для подсчета количества элементов в итерируемых объектах.

Похожие уроки и записи блога

Обработка исключений (try/except) в PythonЗнакомство с Python
Работа с файлами в Python Знакомство с Python
Внутреннее устройство и сортировка словаря в PythonЗнакомство с Python
Продолжаем написание классов в PythonЗнакомство с Python
Генераторы и оператор yield в PythonЗнакомство с Python
Конкатенация и сортировка списков в PythonЗнакомство с Python
Аргументы и параметры функций, операторы * и ** в PythonЗнакомство с Python
Основы функций в PythonЗнакомство с Python
Типы данных в PythonЗнакомство с Python
<
×
>
Раздел «Знакомство с Python»
1. УРОК: Первое знакомство с Python
2. ТЕСТ: Небольшой первый тест по Python
3. УРОК: Переменные и комментарии в Python
4. ТЕСТ: Тест по основным понятиям и работе с сайтом
Самые основы
5. УРОК: Погружение в Python
6. ТЕСТ: Второй вводный тест по Python
7. УРОК: Типы данных в Python
8. УРОК: Форматирование строк в Python
9. УРОК: Условная инструкция if-elif-else в Python
10. УРОК: Преобразование и проверка типов в Python
11. УРОК: Вызов методов цепочкой в Python
Циклы
12. УРОК: Первое знакомство с циклами в Python
13. ТЕСТ: Тест по циклам Python
Немного рандома
14. УРОК: Генерируем случайные числа на Python
15. ТЕСТ: Тест по модулю random Python
Структуры данных
16. УРОК: Структуры данных в Python
17. ТЕСТ: Тест по структурам Python
Списки
18. УРОК: Списки в Python
19. ТЕСТ: Тест по спискам Python
20. УРОК: Изменение списка на месте в Python
21. УРОК: Дополнительно про списки в Python
22. УРОК: Конкатенация и сортировка списков в Python
23. ТЕСТ: Заключительный тест по спискам в Python
Словари
24. УРОК: Словари в Python
25. ТЕСТ: Тест по словарям Python
26. УРОК: Словари и списки: еще глубже
27. УРОК: Перебор элементов словаря в Python
28. УРОК: Внутреннее устройство и сортировка словаря в Python
УРОК 29. Методы словарей и функция len() в Python
Вы здесь
30. ТЕСТ: Заключительный тест по словарям
Множества
31. УРОК: Множества в Python
32. УРОК: Методы и особенности множеств в Python
33. УРОК: Отношения между множествами и операции над ними
34. ТЕСТ: Тест по методам множеств в Python
35. ТЕСТ: Тест по операциям над множествами в Python
Кортежи
36. УРОК: Кортежи в Python
37. УРОК: Более подробно о кортежах в Python
38. ТЕСТ: Тест по кортежам в Python
Снова циклы и немного исключений
39. УРОК: Контроль хода выполнения программы в Python
40. УРОК: Цикл while в Python
41. УРОК: Операторы break, continue и pass в Python
42. УРОК: Циклы for/else и while/else в Python
43. УРОК: Обработка исключений (try/except) в Python
44. ТЕСТ: Тест по циклам и управляющим конструкциям
45. ТЕСТ: Тест по обработке исключений
Работаем с файлами
46. УРОК: Работа с файлами в Python
47. УРОК: Оператор with/as для работы с файлами в Python
48. ТЕСТ: Тест по работе с файлами в Python
Итераторы
49. УРОК: Итераторы в Python
50. УРОК: List/dict/set comprehensions (включения) в Python
51. ТЕСТ: Тест по включениям в Python
Функции
52. УРОК: Основы функций в Python
53. ТЕСТ: Тест по основам функций в Python
54. УРОК: Область видимости в Python
55. ТЕСТ: Тест по области видимости в Python
56. УРОК: Замыкания и оператор nonlocal в Python
57. ТЕСТ: Тест по замыканиям и nonlocal в Python
58. УРОК: Аргументы и параметры функций, операторы * и ** в Python
59. ТЕСТ: Тест по аргументам и параметрам функций в Python
60. ТЕСТ: Тест по операторам * и ** в Python
61. УРОК: Анонимные функции: выражения lambda
62. УРОК: Функциональное программирование: map, filter и reduce
63. ТЕСТ: Тест по парадигме функционального программирования
64. УРОК: Генераторы и оператор yield в Python
65. ТЕСТ: Тест по генераторным функциям и выражениям
Модули
66. УРОК: Модули в Python
67. УРОК: Написание модулей в Python
68. УРОК: Пакеты модулей в Python
69. УРОК: Еще о возможностях модулей в Python
70. ТЕСТ: Тест по модулям и пакетам в Python
Объектно-ориентированное программирование
71. УРОК: Основы объектно-ориентированного программирования (ООП) в Python
72. ТЕСТ: Тест по основам ООП в Python
73. УРОК: Основы написания классов в Python
74. УРОК: Продолжаем написание классов в Python
75. УРОК: Более глубокое изучение классов в Python
76. УРОК: Что дальше?
Впервые на сайте Codebra?

Извините за это всплывающее окно, меня они тоже раздражают.

Образовательный ресурс codebra.ru полностью посвящен программированию. Все курсы и уроки находятся на главной странице. Ради интереса можете посмотреть на содержимое курсов по Python, HTML и CSS, JavaScript, C++ и другие, размещенные на главной странице.

Если что-то не нашли, то воспользуйтесь поиском по сайту, который находится на главной странице в самом верху.

Удачи в обучении!

Закрыть окно