Как очистить словарь в python
Перейти к содержимому

Как очистить словарь в python

  • автор:

Словари¶

dict (от английского «dictionary», словарь) – еще один тип данных в Python. Словари хранят пары ключ : значение . То есть в списках можно достать элемент, если указать его позицию в виде целого числа, а в словарях – тот самый ключ . dict – тип данных, поэтому достать элемент по номеру не получится, но отображение содержимого будет элементов. ключей должна поддерживаться, чтобы всегда можно было быстро найти одно единственно верное значение .

В некоторых языках программирования можно встретить ассоциативные массивы – полную аналогию dict . Также вспомним базы данных, широко использующиеся во всём мире для хранения информации: в таблице можно установить первичный ключ, который уникально идентифицирует запись, как и ключ соответствует значению в словаре. Самый простой пример ключа — порядковый номер объекта!

Создание словаря¶

Использовать словарь стоит, когда нужно сохранять объекты с какими-то ключами и обращаться к объектам по известным ключам. Один из способов определения словаря: указание пар ключ : значение через^запятую внутри фигурных скобок <> . Напоминает set , правда? <> позволяет создать пустой словарь, но не пустое множество.

Например, решили упростить себе жизнь и больше не запоминать дни рождения коллег. Вместо этого, лучше хранить их в одном месте:

В примере dates имеет две пары значений. В первой паре строка «Кунг Фьюри» является ключом, а «1968-09-09» – его значением.

Получение значения по ключу¶

Чтобы получить значение по ключу, необходимо обратиться к переменной, содержащей словарь, и указать ключ в квадратных скобках [] :

Если указать неверный ключ в [] , Python будет ругаться: выбросит ошибку KeyError и перестанет выполнять код. Чуть ниже посмотрим, как можно избежать таких ситуаций.

Изменение и добавление значений¶

Синтаксис изменения значения по ключу и добавления нового ключа со значением одинаковый: в [] нужно указать ключ, поставить = и указать значение, которое теперь будет соответствовать ключу.

Если ключ уже был в словаре, значение по нему изменится на новое, а старое будет удалено. Указание нового ключа со значением добавляет пару в словарь.

Основные методы словаря¶

Проверка вхождения и get() ¶

Помните, ранее говорили, что обращение к несуществующему ключу приводит к ошибке? Пришло время посмотреть пару способов борьбы!

Можно проверить, есть ли интересующий ключ среди множества ключей словаря. Это делается при помощи бинарного оператора in . Слева должен быть указан ключ, справа – переменная со словарем:

В коде проверку можно использовать в условной конструкции if , чтобы принимать решение в зависимости от наличия ключа:

Теперь о методе get() : при помощи его тоже можно получать значения из словаря по ключу. KeyError никогда не появится: если ключа нет, по умолчанию возвращается None :

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

Что такое «длина словаря»?¶

Функция len() для словаря будет возвращать количество пар ключ : значение (их столько же, сколько ключей), которое в нём содержится:

Удаление из словаря¶

Есть несколько способов очистки в словаре: можно убирать по ключу, а можно сразу удалить все!

при помощи инструкции del (от английского «delete») можно удалить пару ключ : значение (удаление ключа эквивалентно удалению пары ключ : значение , так как теряем возможность найти то самое значение ), в общем виде:

Предположим, коллега из самого первого примера уволился и больше нет смысла хранить его день рождения:

pop() — метод, который достает значение, хранящееся по переданному ключу, и сразу удаляет ключ из словаря:

Для метода pop() есть возможность указать значение, которое будет возвращено при обращении к несуществующему ключу. Почти как get() , но всё-таки, без указания этого значения, pop() выбрасывает KeyError .

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

clear() позволяет удалить сразу все ключи словаря, то есть полностью его очистить:

Обратите внимание на то, как работают методы pop() , popitem() и clear() : как только вызываются, словарь меняет свой состав (изменения происходят in place, то изменить по месту без копирования).

Обновление и добавление ключей¶

Лицезрели, что значения в словарь можно добавлять или менять, обращаясь по ключу. Python предоставляет возможность не писать кучу присваиваний, а использовать лаконичный метод update() , который на вход может принимать либо другой словарь, либо пары ключ : значение в какой-то последовательности (например, кортежи по два значения в списке: первое – ключ, второе – значение)

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

Доступ к ключам и значениям¶

В Python можно без проблем извлекать отдельно по ключам или значениям, а также итерироваться по элементам словарей в цикле for . Осталось разобраться, как это работает.

Ключи¶

По умолчанию, в конструкциях вида

переменные цикла (тут – key ) будут принимать значения из множества словаря. Аналогично можно использовать метод keys() (позволяет достать все ключи), который явно говорит, что цикл идет по ключам, например:

Значения¶

При помощи метода values() можно получить все значения, хранящиеся по всем ключам словаря:

Напрямую по значению получить ключ нельзя.

Всё и сразу¶

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

Сортировка¶

Функция sorted() доступна и для словарей. По умолчанию ключи словаря поддерживают порядок, в котором были добавлены, но можно отсортировать их в нужном направлении (в зависимости от типа):

Когда в функции передаётся просто название переменной со словарем, работа идет только над множеством ключей.

Можно ли отсортировать словарь по значениям?

Да, можно попробовать самостоятельно разобраться с аргументами функции sorted() .

Что можно хранить¶

Теперь добавим немного технических подробностей: возможно, уже заметили самостоятельно, что dict может принимать в качестве ключа не всякое значение. На самом деле только объекты (можно вызвать функцию hash() и получить значение) могут быть ключами словаря, на значения это ограничение не распространяется. В dict и set значение хеша от объекта используется для поиска внутри структуры.

Ключом словаря нельзя сделать объект типа, например, list , set или сам dict , так как значение их хеша может измениться со временем. Неизменяемый кортеж может быть ключом только если не содержит внутри изменяемые объекты.

Изменяемость и неизменяемость¶

В англоязычной литературе изменяемые типы называют , а неизменяемые – , почитать документацию.

В Python всё есть объект. Когда пользователь присваивает значение переменной, она начинает ассоциироваться с ячейкой памяти, где лежит это значение. Переменная знает адрес, откуда можно получить значение. id() и hex() показывают адрес в памяти компьютера. id() — адрес в десятичном виде, а hex() поможет перевести в шестнадцатеричный.

Как очистить словарь в python

The clear() method removes all items from the dictionary.

Syntax:

Parameters:

Returns:

Parameters:

Examples:

Error:

Python3

Output:

How is it different from assigning <> to a dictionary? Please refer the below code to see the difference. When we assign <> to a dictionary, a new empty dictionary is created and assigned to the reference. But when we do clear on a dictionary reference, the actual dictionary content is removed, so all references referring to the dictionary become empty.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *