1 added
1 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>19 авг 2021</li>
2
<ul><li>19 авг 2021</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Вы всё ещё пользуетесь квадратными скобками? Тогда мы идём к вам.</p>
4
</ul><p>Вы всё ещё пользуетесь квадратными скобками? Тогда мы идём к вам.</p>
5
<p>Dana Moskvina / Skillbox Media</p>
5
<p>Dana Moskvina / Skillbox Media</p>
6
<p>Кандидат философских наук, специалист по математическому моделированию. Пишет про Data Science, AI и программирование на Python.</p>
6
<p>Кандидат философских наук, специалист по математическому моделированию. Пишет про Data Science, AI и программирование на Python.</p>
7
<p>Словарь в Python - это набор из пар "ключ: значение". Основные его свойства:</p>
7
<p>Словарь в Python - это набор из пар "ключ: значение". Основные его свойства:</p>
8
<ul><li>В каждой паре ключ (key) указывает на значение (value).</li>
8
<ul><li>В каждой паре ключ (key) указывает на значение (value).</li>
9
<li>Ключи уникальны, повторов нет. Значения могут быть одинаковыми.</li>
9
<li>Ключи уникальны, повторов нет. Значения могут быть одинаковыми.</li>
10
<li>В отличие от списка или кортежа, словарь не упорядочен, то есть нельзя указать, какая пара в нём идёт первой, а какая последней.</li>
10
<li>В отличие от списка или кортежа, словарь не упорядочен, то есть нельзя указать, какая пара в нём идёт первой, а какая последней.</li>
11
</ul><p>Ключ от значения отделяется двоеточием, а пары разделяются запятыми. Весь словарь заключён в фигурные скобки {}.</p>
11
</ul><p>Ключ от значения отделяется двоеточием, а пары разделяются запятыми. Весь словарь заключён в фигурные скобки {}.</p>
12
-
author = { "first_name": "Виктор", "last_name": "Пелевин", "username": "dao1962" }<p>В качестве ключей можно использовать строки, числа (целые и дробные), кортежи. Нельзя использовать списки, словари и другие изменяемые типы данных. В качестве значений можно использовать любой тип данных.</p>
12
+
author = { "first_name": "Виктор", "last_name": "Пелевин", "username": "dao1962" }<p>В качест��е ключей можно использовать строки, числа (целые и дробные), кортежи. Нельзя использовать списки, словари и другие изменяемые типы данных. В качестве значений можно использовать любой тип данных.</p>
13
<p>Работа со словарём подразумевает вызов хранимых в нём значений по ключу. И здесь есть несколько способов.</p>
13
<p>Работа со словарём подразумевает вызов хранимых в нём значений по ключу. И здесь есть несколько способов.</p>
14
<p>Первый способ, который узнают начинающие питонисты, - это вызов значений с помощью квадратных скобок. Пишется имя словаря, а за ним в квадратных скобках идёт ключ. Если Python находит такой ключ в словаре, то возвращает соответствующее ему значение.</p>
14
<p>Первый способ, который узнают начинающие питонисты, - это вызов значений с помощью квадратных скобок. Пишется имя словаря, а за ним в квадратных скобках идёт ключ. Если Python находит такой ключ в словаре, то возвращает соответствующее ему значение.</p>
15
author = { "first_name": "Виктор", "last_name": "Пелевин", "username": "dao1962" } author['username'] >>> 'dao1962' author['age'] >>> Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> author['age'] KeyError: 'age'<p>Если же такого ключа нет, то вернётся исключение KeyError. И это, надо сказать, довольно неприятно, особенно в случае с объёмными и часто изменяющимися данными.</p>
15
author = { "first_name": "Виктор", "last_name": "Пелевин", "username": "dao1962" } author['username'] >>> 'dao1962' author['age'] >>> Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> author['age'] KeyError: 'age'<p>Если же такого ключа нет, то вернётся исключение KeyError. И это, надо сказать, довольно неприятно, особенно в случае с объёмными и часто изменяющимися данными.</p>
16
<p>Путей решения этой проблемы несколько:</p>
16
<p>Путей решения этой проблемы несколько:</p>
17
<ul><li>Использовать конструкцию try / except (схожую с условным оператором if / else), которая будет обрабатывать KeyError и возвращать не само исключение, а что-то более удобное для работы - например, сообщение.</li>
17
<ul><li>Использовать конструкцию try / except (схожую с условным оператором if / else), которая будет обрабатывать KeyError и возвращать не само исключение, а что-то более удобное для работы - например, сообщение.</li>
18
</ul>try: author['age'] except KeyError: print('Такого ключа нет') >>> 'Такого ключа нет'<ul><li>Использовать встроенную библиотеку collections, а конкретно структуру defaultdict из неё - расширение над обычным словарём, позволяющее устанавливать значения по умолчанию для запрошенных несуществующих ключей.</li>
18
</ul>try: author['age'] except KeyError: print('Такого ключа нет') >>> 'Такого ключа нет'<ul><li>Использовать встроенную библиотеку collections, а конкретно структуру defaultdict из неё - расширение над обычным словарём, позволяющее устанавливать значения по умолчанию для запрошенных несуществующих ключей.</li>
19
</ul><p>Но есть и третий способ, даже два. Словарь в Python поддерживает встроенные методы вызова значения .get() и .setdefault(), которые позволяют обойтись без обработки исключений и импорта библиотек. Их мы и рассмотрим.</p>
19
</ul><p>Но есть и третий способ, даже два. Словарь в Python поддерживает встроенные методы вызова значения .get() и .setdefault(), которые позволяют обойтись без обработки исключений и импорта библиотек. Их мы и рассмотрим.</p>
20
<p>Пожалуй, самый безопасный способ вызова значений из словаря. У него два параметра:</p>
20
<p>Пожалуй, самый безопасный способ вызова значений из словаря. У него два параметра:</p>
21
<ul><li>Первый (обязательный) - ключ, значение которого мы хотим вызвать.</li>
21
<ul><li>Первый (обязательный) - ключ, значение которого мы хотим вызвать.</li>
22
<li>Второй (опциональный) - значение, которое вернёт метод, если ключа в словаре не существует. По умолчанию оно равно None - его метод и вернёт.</li>
22
<li>Второй (опциональный) - значение, которое вернёт метод, если ключа в словаре не существует. По умолчанию оно равно None - его метод и вернёт.</li>
23
</ul>author.get('first_name') >>> 'Виктор' author.get('age') # ничего не происходит print(author.get('age')) # поэтому используем print >>> None author.get('age', 'Такого ключа в словаре нет') >>> 'Такого ключа в словаре нет'<p>Если ключ в словаре существует, то вызов .get() ничем не отличается от вызова с помощью квадратных скобок. Если же ключа нет, то метод возвращает второй параметр - либо None, либо, например, строку с сообщением.</p>
23
</ul>author.get('first_name') >>> 'Виктор' author.get('age') # ничего не происходит print(author.get('age')) # поэтому используем print >>> None author.get('age', 'Такого ключа в словаре нет') >>> 'Такого ключа в словаре нет'<p>Если ключ в словаре существует, то вызов .get() ничем не отличается от вызова с помощью квадратных скобок. Если же ключа нет, то метод возвращает второй параметр - либо None, либо, например, строку с сообщением.</p>
24
<p>И не надо обрабатывать ошибки и исключения.</p>
24
<p>И не надо обрабатывать ошибки и исключения.</p>
25
<p>Иногда может понадобиться не только защита от ошибки KeyError, но и исправление самого словаря. Для этого применяется метод .setdefault(), который по синтаксису и выводу похож на .get() и принимает те же два параметра: вызываемый ключ и его значение по умолчанию.</p>
25
<p>Иногда может понадобиться не только защита от ошибки KeyError, но и исправление самого словаря. Для этого применяется метод .setdefault(), который по синтаксису и выводу похож на .get() и принимает те же два параметра: вызываемый ключ и его значение по умолчанию.</p>
26
<p>Обнаружив, что вызываемого ключа не существует, метод .setdefault():</p>
26
<p>Обнаружив, что вызываемого ключа не существует, метод .setdefault():</p>
27
<ul><li>сам создаёт ключ;</li>
27
<ul><li>сам создаёт ключ;</li>
28
<li>создаёт к нему в пару значение, заданное вами (по умолчанию - None);</li>
28
<li>создаёт к нему в пару значение, заданное вами (по умолчанию - None);</li>
29
<li><strong>добавляет получившуюся пару в словарь;</strong></li>
29
<li><strong>добавляет получившуюся пару в словарь;</strong></li>
30
<li><strong>возвращает значение.</strong></li>
30
<li><strong>возвращает значение.</strong></li>
31
</ul><p>Если вы не указали второй параметр, он вернёт None, то есть ничего.</p>
31
</ul><p>Если вы не указали второй параметр, он вернёт None, то есть ничего.</p>
32
author.setdefault('middle_name') # None - значит ничего author # добавился ключ 'middle_name' со значением None >>> { 'first_name': 'Виктор', 'last_name': 'Пелевин', 'username': 'dao1962', 'middle_name': None, } author.setdefault('book', 'Омон Ра') >>> 'Омон Ра' author >>> { 'first_name': 'Виктор', 'last_name': 'Пелевин', 'username': 'dao1962', 'middle_name': None, 'book': 'Омон Ра', }<p>Обратите внимание, что этот метод не меняет значения у существующих ключей.</p>
32
author.setdefault('middle_name') # None - значит ничего author # добавился ключ 'middle_name' со значением None >>> { 'first_name': 'Виктор', 'last_name': 'Пелевин', 'username': 'dao1962', 'middle_name': None, } author.setdefault('book', 'Омон Ра') >>> 'Омон Ра' author >>> { 'first_name': 'Виктор', 'last_name': 'Пелевин', 'username': 'dao1962', 'middle_name': None, 'book': 'Омон Ра', }<p>Обратите внимание, что этот метод не меняет значения у существующих ключей.</p>
33
author.setdefault('first_name', 'Владимир') >>> 'Виктор'<p>Если вам не нужно изменять сам словарь, то пользуйтесь вызовом с помощью .get(). Если запрашиваемые ключи и значения отсутствуют в словаре и их нужно туда добавить, то подойдёт метод .setdefault(). Оба этих метода надёжнее, чем "школьный" вызов с помощью квадратных скобок.</p>
33
author.setdefault('first_name', 'Владимир') >>> 'Виктор'<p>Если вам не нужно изменять сам словарь, то пользуйтесь вызовом с помощью .get(). Если запрашиваемые ключи и значения отсутствуют в словаре и их нужно туда добавить, то подойдёт метод .setdefault(). Оба этих метода надёжнее, чем "школьный" вызов с помощью квадратных скобок.</p>
34
<p>Хотите узнать больше? На курсе "<a>Профессия Python-разработчик</a>" вы познакомитесь со всеми методами и инструментами Python, которые необходимы программисту для успешного трудоустройства. Приходите!</p>
34
<p>Хотите узнать больше? На курсе "<a>Профессия Python-разработчик</a>" вы познакомитесь со всеми методами и инструментами Python, которые необходимы программисту для успешного трудоустройства. Приходите!</p>
35
<p>Python для всех</p>
35
<p>Python для всех</p>
36
<p>Вы освоите Python на практике и создадите проекты для портфолио - телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер - руководитель отдела разработки в "Сбере".</p>
36
<p>Вы освоите Python на практике и создадите проекты для портфолио - телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер - руководитель отдела разработки в "Сбере".</p>
37
<p><a>Пройти бесплатно</a></p>
37
<p><a>Пройти бесплатно</a></p>
38
<a><b>Бесплатный курс по разработке на Python ➞</b>Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер - руководитель отдела разработки в "Сбере". Пройти курс</a>
38
<a><b>Бесплатный курс по разработке на Python ➞</b>Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер - руководитель отдела разработки в "Сбере". Пройти курс</a>