HTML Diff
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