HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>6 июн 2023</li>
2 <ul><li>6 июн 2023</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Продолжаем осваивать "змеиный" язык. Сегодня поговорим о словарях - важном инструменте для хранения данных в Python.</p>
4 </ul><p>Продолжаем осваивать "змеиный" язык. Сегодня поговорим о словарях - важном инструменте для хранения данных в Python.</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6 <p>Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.</p>
6 <p>Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.</p>
7 <p>Нет, словари нужны не для того, чтобы переводить запутанный код программистов на человеческий. Их используют для того, чтобы удобно хранить данные и быстро получать к ним доступ по запросу. В этой статье подробно разберём, что такое словари и как с ними работать в Python.</p>
7 <p>Нет, словари нужны не для того, чтобы переводить запутанный код программистов на человеческий. Их используют для того, чтобы удобно хранить данные и быстро получать к ним доступ по запросу. В этой статье подробно разберём, что такое словари и как с ними работать в Python.</p>
8 <p>А если вы уже знакомы со словарями и хотите освежить в памяти отдельные моменты, используйте навигацию или<a>скачайте шпаргалку в конце статьи</a>.</p>
8 <p>А если вы уже знакомы со словарями и хотите освежить в памяти отдельные моменты, используйте навигацию или<a>скачайте шпаргалку в конце статьи</a>.</p>
9 <ul><li><a>Что такое словари</a></li>
9 <ul><li><a>Что такое словари</a></li>
10 <li><a>Как их создавать</a></li>
10 <li><a>Как их создавать</a></li>
11 <li><a>Основные операции</a></li>
11 <li><a>Основные операции</a></li>
12 </ul><ul><li><a>Достаём значение</a></li>
12 </ul><ul><li><a>Достаём значение</a></li>
13 <li><a>Добавляем новый элемент</a></li>
13 <li><a>Добавляем новый элемент</a></li>
14 <li><a>Удаляем ключ</a></li>
14 <li><a>Удаляем ключ</a></li>
15 <li><a>Изменяем значение</a></li>
15 <li><a>Изменяем значение</a></li>
16 </ul><ul><li><a>Методы для работы со словарями</a></li>
16 </ul><ul><li><a>Методы для работы со словарями</a></li>
17 </ul><ul><li><a>update()</a></li>
17 </ul><ul><li><a>update()</a></li>
18 <li><a>get()</a></li>
18 <li><a>get()</a></li>
19 <li><a>pop()</a></li>
19 <li><a>pop()</a></li>
20 <li><a>keys()</a></li>
20 <li><a>keys()</a></li>
21 <li><a>values()</a></li>
21 <li><a>values()</a></li>
22 <li><a>items()</a></li>
22 <li><a>items()</a></li>
23 </ul><ul><li><a>Шпаргалка по синтаксису и методам</a></li>
23 </ul><ul><li><a>Шпаргалка по синтаксису и методам</a></li>
24 </ul><p>Словарь в языках программирования - это что-то вроде телефонной книги, где под каждым номером скрывается какой-то человек.</p>
24 </ul><p>Словарь в языках программирования - это что-то вроде телефонной книги, где под каждым номером скрывается какой-то человек.</p>
25 <p>Только на языке разработчиков номера называют ключами, а людей, которым они принадлежат, - значениями. Вот как это можно представить в виде таблицы:</p>
25 <p>Только на языке разработчиков номера называют ключами, а людей, которым они принадлежат, - значениями. Вот как это можно представить в виде таблицы:</p>
26 КлючЗначение8 (984) 123-53-11Дизайнер Валера8 (934) 256-32-54Менеджер Егор (не отвечать)<p>При этом ключи в словарях уникальны, а значения могут повторяться. Условно говоря, дизайнеру Валере может принадлежать сколько угодно номеров - но у каждого номера может быть только один владелец.</p>
26 КлючЗначение8 (984) 123-53-11Дизайнер Валера8 (934) 256-32-54Менеджер Егор (не отвечать)<p>При этом ключи в словарях уникальны, а значения могут повторяться. Условно говоря, дизайнеру Валере может принадлежать сколько угодно номеров - но у каждого номера может быть только один владелец.</p>
27 <p>Мы привели пример с телефонной книгой, но вы можете хранить в словаре всё что угодно: названия песен, имена покупателей, товары в интернет-магазине и так далее. При этом стоит помнить важное правило:</p>
27 <p>Мы привели пример с телефонной книгой, но вы можете хранить в словаре всё что угодно: названия песен, имена покупателей, товары в интернет-магазине и так далее. При этом стоит помнить важное правило:</p>
28 <p>Ключами могут быть строки, числа (целые и дробные) и кортежи. Нельзя использовать списки, словари и другие изменяемые типы данных. В значения можно "положить" любые типы данных - и даже новые словари.</p>
28 <p>Ключами могут быть строки, числа (целые и дробные) и кортежи. Нельзя использовать списки, словари и другие изменяемые типы данных. В значения можно "положить" любые типы данных - и даже новые словари.</p>
29 <p>Например, давайте в качестве ключа укажем название книги, а значением сделаем её автора.</p>
29 <p>Например, давайте в качестве ключа укажем название книги, а значением сделаем её автора.</p>
30 КлючЗначение"Гарри Поттер и философский камень"Джоан Роулинг"Убить пересмешника"Харпер Ли"Грокаем алгоритмы"Адитья Бхаргава<p>Теперь, если у нас есть название книги, мы можем быстро найти её автора. Этим словари и удобны: знаем ключ - моментально получаем значение.</p>
30 КлючЗначение"Гарри Поттер и философский камень"Джоан Роулинг"Убить пересмешника"Харпер Ли"Грокаем алгоритмы"Адитья Бхаргава<p>Теперь, если у нас есть название книги, мы можем быстро найти её автора. Этим словари и удобны: знаем ключ - моментально получаем значение.</p>
31 <p><strong>? Словарь - это неупорядоченная структура данных.</strong>Это значит, что все пары "ключ - значение" хранятся в произвольном порядке. Идея в том, что нам неважно, где находится элемент: в начале, в серединие или в конце. Важно то, что он лежит где-то внутри и мы можем при случае его достать.</p>
31 <p><strong>? Словарь - это неупорядоченная структура данных.</strong>Это значит, что все пары "ключ - значение" хранятся в произвольном порядке. Идея в том, что нам неважно, где находится элемент: в начале, в серединие или в конце. Важно то, что он лежит где-то внутри и мы можем при случае его достать.</p>
32 <p>Пример упорядоченной структуры - это список. Там у всех элементов есть свои индексы, благодаря которым их можно отсортировать как душе угодно. Если хотите больше знать о списках, читайте<a>другую нашу статью</a>. А мы пойдём дальше - создадим наш первый словарь.</p>
32 <p>Пример упорядоченной структуры - это список. Там у всех элементов есть свои индексы, благодаря которым их можно отсортировать как душе угодно. Если хотите больше знать о списках, читайте<a>другую нашу статью</a>. А мы пойдём дальше - создадим наш первый словарь.</p>
33 <p>Словари в Python оформляются фигурными скобками. Внутри них находятся пары "ключ - значение". Первым пишется ключ, а затем, через двоеточие, - значение. Сами пары отделяются друг от друга запятыми.</p>
33 <p>Словари в Python оформляются фигурными скобками. Внутри них находятся пары "ключ - значение". Первым пишется ключ, а затем, через двоеточие, - значение. Сами пары отделяются друг от друга запятыми.</p>
34 books = { 'Гарри Поттер и философский камень' : 'Джоан Роулинг', 'Убить пересмешника' : 'Харпер Ли' }<p>Если вместо значений не указать ничего, язык автоматически создаст<a>множество</a>(а не словарь), где будут только ключи:</p>
34 books = { 'Гарри Поттер и философский камень' : 'Джоан Роулинг', 'Убить пересмешника' : 'Харпер Ли' }<p>Если вместо значений не указать ничего, язык автоматически создаст<a>множество</a>(а не словарь), где будут только ключи:</p>
35 books = { 'Гарри Поттер и философский камень', 'Убить пересмешника' }<p>Выведем на экран содержимое словаря с помощью функции print:</p>
35 books = { 'Гарри Поттер и философский камень', 'Убить пересмешника' }<p>Выведем на экран содержимое словаря с помощью функции print:</p>
36 print(books) &gt; {'Гарри Поттер и философский камень', 'Убить пересмешника'}<p>Результат:</p>
36 print(books) &gt; {'Гарри Поттер и философский камень', 'Убить пересмешника'}<p>Результат:</p>
37 {'Гарри Поттер и философский камень', 'Убить пересмешника'}<p>Теперь попробуем создать и вывести полноценный словарь:</p>
37 {'Гарри Поттер и философский камень', 'Убить пересмешника'}<p>Теперь попробуем создать и вывести полноценный словарь:</p>
38 dict = { 'Гарри Поттер и философский камень' : 'Джоан Роулинг', 'Убить пересмешника' : 'Харпер Ли' } print(dict) &gt; {'Гарри Поттер и философский камень': 'Джоан Роулинг', 'Убить пересмешника': 'Харпер Ли'}<p>Результат:</p>
38 dict = { 'Гарри Поттер и философский камень' : 'Джоан Роулинг', 'Убить пересмешника' : 'Харпер Ли' } print(dict) &gt; {'Гарри Поттер и философский камень': 'Джоан Роулинг', 'Убить пересмешника': 'Харпер Ли'}<p>Результат:</p>
39 {'Гарри Поттер и философский камень': 'Джоан Роулинг', 'Убить пересмешника': 'Харпер Ли'}<p>Бинго!</p>
39 {'Гарри Поттер и философский камень': 'Джоан Роулинг', 'Убить пересмешника': 'Харпер Ли'}<p>Бинго!</p>
40 <p>Мало просто создать словарь - иногда нам нужно взаимодействовать с отдельными его элементами. Разберёмся с базовыми операциями.</p>
40 <p>Мало просто создать словарь - иногда нам нужно взаимодействовать с отдельными его элементами. Разберёмся с базовыми операциями.</p>
41 <p>Если нам известен ключ, можно быстро извлечь из словаря его значение - для этого используйте квадратные скобки.</p>
41 <p>Если нам известен ключ, можно быстро извлечь из словаря его значение - для этого используйте квадратные скобки.</p>
42 # Создаём словарь dict = { 'Гарри Поттер и философский камень' : 'Джоан Роулинг', 'Убить пересмешника' : 'Харпер Ли' } # В квадратных скобках указываем значение harryPotterAuthor = dict['Гарри Поттер и философский камень'] print(harryPotterAuthor) # На выходе получаем значение &gt; Джоан Роулинг<p>Если указать неправильный ключ, мы получим ошибку:</p>
42 # Создаём словарь dict = { 'Гарри Поттер и философский камень' : 'Джоан Роулинг', 'Убить пересмешника' : 'Харпер Ли' } # В квадратных скобках указываем значение harryPotterAuthor = dict['Гарри Поттер и философский камень'] print(harryPotterAuthor) # На выходе получаем значение &gt; Джоан Роулинг<p>Если указать неправильный ключ, мы получим ошибку:</p>
43 harryPotterAuthor = dict['Гарри Поттер и драгоценный камень'] print(harryPotterAuthor) &gt; ERROR! Traceback (most recent call last): File "&lt;string&gt;", line 6, in &lt;module&gt; KeyError: 'Гарри Поттер и драгоценный камень'<p>Ошибка говорит нам, что по заданному ключу ничего не нашлось.</p>
43 harryPotterAuthor = dict['Гарри Поттер и драгоценный камень'] print(harryPotterAuthor) &gt; ERROR! Traceback (most recent call last): File "&lt;string&gt;", line 6, in &lt;module&gt; KeyError: 'Гарри Поттер и драгоценный камень'<p>Ошибка говорит нам, что по заданному ключу ничего не нашлось.</p>
44 <p>Теперь попробуем добавить в наш словарь с книгами ещё одну запись. Чтобы это сделать, в квадратных скобках указываем ключ, а потом, через знак равенства, добавляем значение.</p>
44 <p>Теперь попробуем добавить в наш словарь с книгами ещё одну запись. Чтобы это сделать, в квадратных скобках указываем ключ, а потом, через знак равенства, добавляем значение.</p>
45 dict['Преступление и наказание'] = 'Фёдор Достоевский'<p>Пробуем вывести содержимое словаря на экран - видим, что новая запись добавилась в самом конце.</p>
45 dict['Преступление и наказание'] = 'Фёдор Достоевский'<p>Пробуем вывести содержимое словаря на экран - видим, что новая запись добавилась в самом конце.</p>
46 print(dict) &gt; {'Гарри Поттер и философский камень': 'Джоан Роулинг', 'Убить пересмешника': 'Харпер Ли', 'Преступление и наказание': 'Фёдор Достоевский'}<p>Готово!</p>
46 print(dict) &gt; {'Гарри Поттер и философский камень': 'Джоан Роулинг', 'Убить пересмешника': 'Харпер Ли', 'Преступление и наказание': 'Фёдор Достоевский'}<p>Готово!</p>
47 <p>Чтобы удалить элемент из словаря, используют команду del. При этом нам достаточно ввести только ключ, а значение удалится вместе с ним.</p>
47 <p>Чтобы удалить элемент из словаря, используют команду del. При этом нам достаточно ввести только ключ, а значение удалится вместе с ним.</p>
48 del dict['Убить пересмешника'] print(dict) &gt; {'Гарри Поттер и философский камень': 'Джоан Роулинг'}<p>Синтаксис немного необычный: мы пишем команду del перед тем, как обратиться к словарю. Но всё прекрасно работает, мы проверили :)</p>
48 del dict['Убить пересмешника'] print(dict) &gt; {'Гарри Поттер и философский камень': 'Джоан Роулинг'}<p>Синтаксис немного необычный: мы пишем команду del перед тем, как обратиться к словарю. Но всё прекрасно работает, мы проверили :)</p>
49 <p>Здесь всё просто: в квадратных скобках пишем уже существующий ключ, а через знак равенства указываем новое значение.</p>
49 <p>Здесь всё просто: в квадратных скобках пишем уже существующий ключ, а через знак равенства указываем новое значение.</p>
50 dict['Гарри Поттер и философский камень'] = 'Михаил Лермонтов'<p>Выводим в консоль - видим, что значение первой пары поменялось.</p>
50 dict['Гарри Поттер и философский камень'] = 'Михаил Лермонтов'<p>Выводим в консоль - видим, что значение первой пары поменялось.</p>
51 print(dict) &gt; {'Гарри Поттер и философский камень': 'Михаил Лермонтов', 'Убить пересмешника': 'Харпер Ли'}<p><strong>Важное замечание.</strong>Если указать неправильный ключ, то мы вместо обращения к уже существующей паре создадим новую:</p>
51 print(dict) &gt; {'Гарри Поттер и философский камень': 'Михаил Лермонтов', 'Убить пересмешника': 'Харпер Ли'}<p><strong>Важное замечание.</strong>Если указать неправильный ключ, то мы вместо обращения к уже существующей паре создадим новую:</p>
52 dict['Барри Воттер и философский камень'] = 'Михаил Лермонтов' print(dict) &gt; {'Гарри Поттер и философский камень': 'Джоан Роулинг', 'Убить пересмешника': 'Харпер Ли', 'Барри Воттер и философский камень': 'Михаил Лермонтов'}<p>Чтобы избежать таких ситуаций, можно использовать безопасный метод get(), о котором мы поговорим в следующем разделе.</p>
52 dict['Барри Воттер и философский камень'] = 'Михаил Лермонтов' print(dict) &gt; {'Гарри Поттер и философский камень': 'Джоан Роулинг', 'Убить пересмешника': 'Харпер Ли', 'Барри Воттер и философский камень': 'Михаил Лермонтов'}<p>Чтобы избежать таких ситуаций, можно использовать безопасный метод get(), о котором мы поговорим в следующем разделе.</p>
53 <p>Для словарей создали много полезных методов, которые облегчают привычные операции - например, можно одной функцией добавить в словарь несколько элементов или предусмотреть обработку ошибок.</p>
53 <p>Для словарей создали много полезных методов, которые облегчают привычные операции - например, можно одной функцией добавить в словарь несколько элементов или предусмотреть обработку ошибок.</p>
54 <p><strong>Что делает:</strong>добавляет в словарь одну или сразу несколько пар "ключ - значение".</p>
54 <p><strong>Что делает:</strong>добавляет в словарь одну или сразу несколько пар "ключ - значение".</p>
55 <p><strong>Как использовать:</strong>объявляем метод update(), внутри которого создаём новый словарь из элементов, которыми хотим дополнить существующий.</p>
55 <p><strong>Как использовать:</strong>объявляем метод update(), внутри которого создаём новый словарь из элементов, которыми хотим дополнить существующий.</p>
56 dict = { 'Гарри Поттер и философский камень' : 'Джоан Роулинг', 'Убить пересмешника' : 'Харпер Ли' } dict.update({ 'Преступление и наказание' : 'Фёдор Достоевский', 'Чемодан' : 'Сергей Довлатов' }) print(dict) &gt; {'Гарри Поттер и философский камень': 'Джоан Роулинг', 'Убить пересмешника': 'Харпер Ли', 'Преступление и наказание': 'Фёдор Достоевский', 'Чемодан': 'Сергей Довлатов'}<p><strong>Что делает:</strong>возвращает значение из словаря по ключу - или None, если такого ключа не существует.</p>
56 dict = { 'Гарри Поттер и философский камень' : 'Джоан Роулинг', 'Убить пересмешника' : 'Харпер Ли' } dict.update({ 'Преступление и наказание' : 'Фёдор Достоевский', 'Чемодан' : 'Сергей Довлатов' }) print(dict) &gt; {'Гарри Поттер и философский камень': 'Джоан Роулинг', 'Убить пересмешника': 'Харпер Ли', 'Преступление и наказание': 'Фёдор Достоевский', 'Чемодан': 'Сергей Довлатов'}<p><strong>Что делает:</strong>возвращает значение из словаря по ключу - или None, если такого ключа не существует.</p>
57 harryPotterAuthor = dict.get('Гарри Поттер и философский камень') print(harryPotterAuthor) &gt; Джоан Роулинг<p>Попробуем передать ключ, которого нет в словаре:</p>
57 harryPotterAuthor = dict.get('Гарри Поттер и философский камень') print(harryPotterAuthor) &gt; Джоан Роулинг<p>Попробуем передать ключ, которого нет в словаре:</p>
58 harryPotterAuthor = dict.get('Гарри Поттер в путешествии по Золотому кольцу России') print(harryPotterAuthor) &gt; None<p>? У этого метода есть тайный козырь в рукаве. Вместо сухого и формального None он может вывести любое значение, которое вы захотите, - например, сообщение об ошибке. Для этого надо прописать нужное значение вторым аргументом. Мы решили добавить строчку с ошибкой:</p>
58 harryPotterAuthor = dict.get('Гарри Поттер в путешествии по Золотому кольцу России') print(harryPotterAuthor) &gt; None<p>? У этого метода есть тайный козырь в рукаве. Вместо сухого и формального None он может вывести любое значение, которое вы захотите, - например, сообщение об ошибке. Для этого надо прописать нужное значение вторым аргументом. Мы решили добавить строчку с ошибкой:</p>
59 harryPotterAuthor = dict.get('Гарри Поттер в путешествии по Золотому кольцу России', 'Такого ключа нет') print(harryPotterAuthor) &gt; Такого ключа нет<p>В этом состоит главное преимущество метода get() перед обычными квадратными скобками - для обработки ошибок можно не писать объёмные конструкции try/except, а ограничиться всего одной аккуратной строчкой.</p>
59 harryPotterAuthor = dict.get('Гарри Поттер в путешествии по Золотому кольцу России', 'Такого ключа нет') print(harryPotterAuthor) &gt; Такого ключа нет<p>В этом состоит главное преимущество метода get() перед обычными квадратными скобками - для обработки ошибок можно не писать объёмные конструкции try/except, а ограничиться всего одной аккуратной строчкой.</p>
60 <p><strong>Что делает:</strong>удаляет элемент из словаря по ключу.</p>
60 <p><strong>Что делает:</strong>удаляет элемент из словаря по ключу.</p>
61 harryPotterAuthor = dict.pop('Гарри Поттер и философский камень') print(harryPotterAuthor) &gt; Джоан Роулинг print(dict) &gt; {'Убить пересмешника': 'Харпер Ли'}<p><strong>Что делает:</strong>возвращает все ключи из словаря - но без значений.</p>
61 harryPotterAuthor = dict.pop('Гарри Поттер и философский камень') print(harryPotterAuthor) &gt; Джоан Роулинг print(dict) &gt; {'Убить пересмешника': 'Харпер Ли'}<p><strong>Что делает:</strong>возвращает все ключи из словаря - но без значений.</p>
62 dictKeys = dict.keys() print(dictKeys) &gt; ['Гарри Поттер и философский камень', 'Убить пересмешника']<p><strong>Что делает:</strong>возвращает все значения из словаря - но без ключей.</p>
62 dictKeys = dict.keys() print(dictKeys) &gt; ['Гарри Поттер и философский камень', 'Убить пересмешника']<p><strong>Что делает:</strong>возвращает все значения из словаря - но без ключей.</p>
63 dictValues = dict.values() print(dictValues) &gt; ['Джоан Роулинг', 'Харпер Ли']<p><strong>Что делает:</strong>возвращает все пары "ключ - значение".</p>
63 dictValues = dict.values() print(dictValues) &gt; ['Джоан Роулинг', 'Харпер Ли']<p><strong>Что делает:</strong>возвращает все пары "ключ - значение".</p>
64 dictItems = dict.items() print(dictItems) &gt; [('Гарри Поттер и философский камень', 'Джоан Роулинг'), ('Убить пересмешника', 'Харпер Ли')]<p>Лучше не заучивать голую теорию, а сразу отрабатывать знания на практике. Начать можно, например, с бесплатных упражнений на <a>w3schools.com</a>. А чтобы быстро находить нужный метод и не ходить каждый раз в гугл, можете сохранить себе<a>шпаргалку по ссылке</a>или таблицу ниже.</p>
64 dictItems = dict.items() print(dictItems) &gt; [('Гарри Поттер и философский камень', 'Джоан Роулинг'), ('Убить пересмешника', 'Харпер Ли')]<p>Лучше не заучивать голую теорию, а сразу отрабатывать знания на практике. Начать можно, например, с бесплатных упражнений на <a>w3schools.com</a>. А чтобы быстро находить нужный метод и не ходить каждый раз в гугл, можете сохранить себе<a>шпаргалку по ссылке</a>или таблицу ниже.</p>
65 Метод<strong>Что делает</strong>clear()Удаляет все элементы из словаряcopy()Создаёт копию словаряupdate()Добавляет в словарь одну или несколько пар "ключ - значение"pop()Удаляет элемент из словаря по ключуkeys()Возвращает список ключей из словаряvalues()Возвращает список значений из словаряitems()Возвращает все пары "ключ - значение"popitem()Удаляет последнюю добавленную пару "ключ - значение"get()Возвращает значение из словаря по ключу - или None, если такого ключа не существует. Можно указать своё значение в качестве второго аргументаsetdefault()Возвращает значение указанного ключа. Если ключа не существует, создаёт его и добавляет в словарь со значением None или тем, что вы добавите в качестве второго аргумента<p>Python для всех</p>
65 Метод<strong>Что делает</strong>clear()Удаляет все элементы из словаряcopy()Создаёт копию словаряupdate()Добавляет в словарь одну или несколько пар "ключ - значение"pop()Удаляет элемент из словаря по ключуkeys()Возвращает список ключей из словаряvalues()Возвращает список значений из словаряitems()Возвращает все пары "ключ - значение"popitem()Удаляет последнюю добавленную пару "ключ - значение"get()Возвращает значение из словаря по ключу - или None, если такого ключа не существует. Можно указать своё значение в качестве второго аргументаsetdefault()Возвращает значение указанного ключа. Если ключа не существует, создаёт его и добавляет в словарь со значением None или тем, что вы добавите в качестве второго аргумента<p>Python для всех</p>
66 <p>Вы освоите Python на практике и создадите проекты для портфолио - телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер - руководитель отдела разработки в "Сбере".</p>
66 <p>Вы освоите Python на практике и создадите проекты для портфолио - телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер - руководитель отдела разработки в "Сбере".</p>
67 <p><a>Пройти бесплатно</a></p>
67 <p><a>Пройти бесплатно</a></p>
68 <a><b>Бесплатный курс по разработке на Python ➞</b>Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер - руководитель отдела разработки в "Сбере". Пройти курс</a>
68 <a><b>Бесплатный курс по разработке на Python ➞</b>Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер - руководитель отдела разработки в "Сбере". Пройти курс</a>