0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Словарь в Python -<strong>изменяемый</strong>или<strong>мутабельный</strong>. Но для добавления новой пары "ключ-значение" не нужны отдельные методы, вроде спискового метода .append - достаточно обычного присваивания:</p>
1
<p>Словарь в Python -<strong>изменяемый</strong>или<strong>мутабельный</strong>. Но для добавления новой пары "ключ-значение" не нужны отдельные методы, вроде спискового метода .append - достаточно обычного присваивания:</p>
2
<p>Здесь вы можете увидеть, что присваивание значения новому ключу выглядит точно так же, как и присваивание существующему. Именно эту тему мы изучим подробнее в этом уроке</p>
2
<p>Здесь вы можете увидеть, что присваивание значения новому ключу выглядит точно так же, как и присваивание существующему. Именно эту тему мы изучим подробнее в этом уроке</p>
3
<h2>Метод pop</h2>
3
<h2>Метод pop</h2>
4
<p>Удаление элементов из словаря можно сделать с помощью метода pop - в этом словарь уже больше похож на список. Только вместо индекса используется ключ:</p>
4
<p>Удаление элементов из словаря можно сделать с помощью метода pop - в этом словарь уже больше похож на список. Только вместо индекса используется ключ:</p>
5
<p>Этот пример показывает, что будет, если попытаться извлечь значение по несуществующему ключу - мы получим исключение.</p>
5
<p>Этот пример показывает, что будет, если попытаться извлечь значение по несуществующему ключу - мы получим исключение.</p>
6
<p>Однако метод pop можно вызывать с указанием значения по умолчанию. В этом случае при отсутствии ключа в словаре будет возвращено это самое значение, а исключение возбуждено не будет:</p>
6
<p>Однако метод pop можно вызывать с указанием значения по умолчанию. В этом случае при отсутствии ключа в словаре будет возвращено это самое значение, а исключение возбуждено не будет:</p>
7
<p>Аналогом спискового pop без аргументов для словаря служит метод popitem. Этот метод извлекает ключ и значение в виде кортежа, а если словарь уже пуст, то возбуждает исключение:</p>
7
<p>Аналогом спискового pop без аргументов для словаря служит метод popitem. Этот метод извлекает ключ и значение в виде кортежа, а если словарь уже пуст, то возбуждает исключение:</p>
8
<p>В пайтоне, начиная с версии 3.7, гарантирован порядок LIFO - Last In First Out. Это значит, что пары будут извлекаться в порядке обратном добавлению, то есть последняя добавленная пара, будет извлечена первой. При этом мы можем быть уверены в том, что:</p>
8
<p>В пайтоне, начиная с версии 3.7, гарантирован порядок LIFO - Last In First Out. Это значит, что пары будут извлекаться в порядке обратном добавлению, то есть последняя добавленная пара, будет извлечена первой. При этом мы можем быть уверены в том, что:</p>
9
<ul><li>Все пары будут извлечены</li>
9
<ul><li>Все пары будут извлечены</li>
10
<li>Каждая пара будет извлечена строго один раз</li>
10
<li>Каждая пара будет извлечена строго один раз</li>
11
</ul><h2>Дополнение одного словаря другим</h2>
11
</ul><h2>Дополнение одного словаря другим</h2>
12
<p>У списка есть метод extend, который расширяет один список другим. У словаря есть похожий по смыслу метод update. Но при вызове update ассоциированный объект словаря не просто получает пары "ключ-значение" из нового словаря. Происходит именно обновление данных - поэтому метод и называется update. Работает это так:</p>
12
<p>У списка есть метод extend, который расширяет один список другим. У словаря есть похожий по смыслу метод update. Но при вызове update ассоциированный объект словаря не просто получает пары "ключ-значение" из нового словаря. Происходит именно обновление данных - поэтому метод и называется update. Работает это так:</p>
13
<ul><li>Новые ключи дописываются в словарь</li>
13
<ul><li>Новые ключи дописываются в словарь</li>
14
<li>Если какие-то ключи уже существовали до этого, то связанные с ними значения будут заменены новыми</li>
14
<li>Если какие-то ключи уже существовали до этого, то связанные с ними значения будут заменены новыми</li>
15
</ul><p>Так это выглядит в коде:</p>
15
</ul><p>Так это выглядит в коде:</p>
16
<p>В коде выше мы добавили лимоны и обновили количество апельсинов.</p>
16
<p>В коде выше мы добавили лимоны и обновили количество апельсинов.</p>
17
<h2>Копирование словаря</h2>
17
<h2>Копирование словаря</h2>
18
<p>В случае списков мы можем сложить два списка двумя способами:</p>
18
<p>В случае списков мы можем сложить два списка двумя способами:</p>
19
<ul><li>Просто сложить два списка и получить новый</li>
19
<ul><li>Просто сложить два списка и получить новый</li>
20
<li>Сделать копию одного списка и дополнить ее данными из второго</li>
20
<li>Сделать копию одного списка и дополнить ее данными из второго</li>
21
</ul><p>Но словари нельзя складывать, да и срезы словари тоже не поддерживают. Зато у словаря есть метод copy. Он работает как копирование списка с помощью среза [:] - при вызове он возвращает<strong>поверхностную копию</strong>из словаря. Так же ее называют "неглубокой копией" или shallow copy.</p>
21
</ul><p>Но словари нельзя складывать, да и срезы словари тоже не поддерживают. Зато у словаря есть метод copy. Он работает как копирование списка с помощью среза [:] - при вызове он возвращает<strong>поверхностную копию</strong>из словаря. Так же ее называют "неглубокой копией" или shallow copy.</p>
22
<p>Поверхностная копия воспроизводит только структуру словаря: не копирует значения, а только создает на них новые ссылки. Тем не менее поверхностная копия - это новый словарь, который может изменять свой состав, не влияя на оригинал:</p>
22
<p>Поверхностная копия воспроизводит только структуру словаря: не копирует значения, а только создает на них новые ссылки. Тем не менее поверхностная копия - это новый словарь, который может изменять свой состав, не влияя на оригинал:</p>
23
<p>Словарь c получил собственную структуру, при этом его обновление не затронуло оригинальный словарь d. Однако изменение объекта списка по ссылке затронуло и оригинал, потому что при копировании словаря ссылка на список тоже скопировалась.</p>
23
<p>Словарь c получил собственную структуру, при этом его обновление не затронуло оригинальный словарь d. Однако изменение объекта списка по ссылке затронуло и оригинал, потому что при копировании словаря ссылка на список тоже скопировалась.</p>
24
<h2>Очистка словаря</h2>
24
<h2>Очистка словаря</h2>
25
<p>Списки можно очистить с помощью присваивания срезу l[:] = []. В случае словаря вместо присваивания срезу используется метод clear.</p>
25
<p>Списки можно очистить с помощью присваивания срезу l[:] = []. В случае словаря вместо присваивания срезу используется метод clear.</p>
26
<p>Метод clear() удаляет все элементы из текущего словаря:</p>
26
<p>Метод clear() удаляет все элементы из текущего словаря:</p>
27
27