Получить, а потом удалить пару ключ/значение из словаря Python
Метод dict.popitem() удалит и вернет двойной кортеж (key, value) из словаря dict . Пары возвращаются с конца словаря, в порядке LIFO (последним пришёл — первым ушёл).
Метод полезен для деструктивной итерации по словарю, как это часто используется в заданных алгоритмах. Если словарь пуст, вызов dict.popitem() вызывает исключение KeyError .
Изменено в Python-3.7: порядок LIFO теперь гарантирован. В предыдущих версиях метод dict.popitem() возвращал бы произвольную пару ключ/значение.
Пример работы метода словаря dict.popitem() :
>>> x = 'one': 0, 'two': 20, 'three': 3, 'four': 4> >>> x.popitem() # ('four', 4) >>> x.popitem() # ('three', 3) >>> x.popitem() # ('two', 20) >>> x.popitem() # ('one', 0) >>> x.popitem() # Traceback (most recent call last): # File "", line 1, in # KeyError: 'popitem(): dictionary is empty'
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Представления словарей dict.keys, dict.values и dict.items
- Исходный словарь для представления dictview.mapping
- Получение списка ключей словаря list(dict)
- Количество элементов в словаре len(dict)
- Доступ к значению словаря по ключу dict[key]
- Добавление/изменение значения словаря по ключу key
- Удаление значения словаря по ключу
- Проверка наличия/отсутствия ключа key в словаре dict
- Проверка наличия/отсутствия значения value в словаре Python
- Проверка наличия/отсутствия пары (key, value) в словаре dict
- Итерирование по ключам и значениям словаря Python
- Метод dict.clear(). Очистить словарь
- Метод dict.copy(), копия словаря
- Метод dict.fromkeys(), словарь с ключами по умолчанию
- Метод dict.get(), значение по умолчанию если ключа нет
- Метод dict.items(), список кортежей
- Метод dict.keys(), список ключей словаря
- Метод dict.values(), список значений словаря
- Метод dict.pop()
- Метод dict.popitem(), получить пару ключ/значение
- Метод dict.setdefault(), получает/вставляет значение ключа
- Метод dict.update(), обновление/дополнение словаря
- Объединение двух словарей в новый словарь Python
- Сортировка словаря по значению и/или ключу
- Обратный порядок/реверс словаря reversed(dict)
- Генератор словаря и его использование
- Фильтр словаря по ключам и/или значениям
- Словарь как фабрика функций
Методы словарей и операции над словарями в Python
У класса dict есть классовый метод fromkeys( iterable [, value ]) , с помощью которого создается новый словарь, ключи которого берутся из переданного в метод итерируемого объекта. Значениями всех ключей по-умолчанию является None или передаваемое вторым аргументом значение.
letters = 'aeiyou' nums = [5, 8, 9, 3] words = ('cat', 'dog', 'pig') dl = dict.fromkeys(letters, 0) dn = dict.fromkeys(nums) dw = dn.fromkeys(words, 'gray') print(dl) print(dn) print(dw)
Методы экземпляра словаря keys() , values() , items() возвращают особые типы объектов — dictionary view objects — объекты просмотра словаря. Эти объекты являются итерируемыми.
d = dk = d.keys() dv = d.values() di = d.items() print(dk) print(dv) print(di) for k, v in di: print(k, '=', v) print(list(dk)) print(tuple(dv))
dict_keys(['cat', 'dog', 'pig']) dict_values([5, 3, 1]) dict_items([('cat', 5), ('dog', 3), ('pig', 1)]) cat = 5 dog = 3 pig = 1 ['cat', 'dog', 'pig'] (5, 3, 1)
Важной особенностью экземпляров просмотра словаря является то, что они остаются «связанными» со своим словарем. Поэтому любые изменения последнего отражаются в этих объектах.
d = di = d.items() dv = d.values() print(list(di)) print(sum(list(dv))) d['cow'] = 1 d['pig'] += 1 print(list(di)) print(sum(list(dv)))
[('cat', 5), ('dog', 3), ('pig', 1)] 9 [('cat', 5), ('dog', 3), ('pig', 2), ('cow', 1)] 11
Если подобная связь не требуется, то список всех ключей словаря может быть удобнее получать с помощью встроенной функции list( iterable =()) .
>>> d = >>> k = list(d) >>> k ['cat', 'dog', 'pig'] >>> d['cow'] = 1 >>> k ['cat', 'dog', 'pig']
Если требуется очистить содержимое словаря без удаления самого словаря, следует использовать метод clear() .
d = print(d) print('Number of entries:', len(d)) d.clear() print(d) print('Number of entries:', len(d))
Number of entries: 3 <> Number of entries: 0
Просто удалить любую запись словаря, обращаясь к ней по ключу, можно с помощью оператора del , который в классе dict перегружается методом __delitem__( self , key ) . Если записи с указанным ключом нет, будет выбрашено исключение KeyError .
>>> a = dict(cat=3, dog=5, pig=1) >>> a >>> del a['cat'] >>> a.__delitem__('pig') >>> a >>> del a['cow'] Traceback (most recent call last): File "", line 1, in KeyError: 'cow'
В отличие от del метод pop( key [, default ]) не только удаляет запись из словаря по ключу, но и возвращает значение этой записи. Если переданного методу ключа нет в словаре, то в качестве значения возвращается default , если он был указан, или выбрасывается KeyError .
d = s = sum(list(d.values())) print(s) # 9 s -= d.pop('dog') print(s) # 6 s -= d.pop('cow', 0) print(s) # 6 s -= d.pop('pig', 0) print(s) # 5
Метод popitem() не принимает аргументов, удаляет из словаря последнюю запись, возвращает ее в виде кортежа, в котором первый элемент представляет собой ключ, второй — значение. Вызов метода на пустой словарь приводит к выбросу KeyError .
d = while len(d) != 0: print(d.popitem())
('pig', 1) ('dog', 3) ('cat', 5)
Метод get( key , default =None) возвращает значение указанного ключа, также как и обычное получение из словаря значения по ключу через квадратные скобки. Однако данный метод никогда не возбуждает KeyError и поэтому может быть предпочтительным в ряде случаев. Значение default возвращается, когда ключа нет в словаре. Вместо None можно указать свое значение.
d = for i in range(4): print(d.get(input('Pet: ')))
Pet: dog 3 Pet: cow None Pet: pig 1 Pet: rabbit None
По аналогии с этим при добавлении записи в словарь вместо нотации d [ key ] = value можно использовать метод setdefault( key , default =None) . Его отличительной особенностью является то, что если запись с таким ключом уже есть в словаре, ее значение не будет перезаписано. При этом метод возвращает значение ключа, по которому можно оценить, была ли добавлена новая запись, или она уже ранее присутствовала в словаре.
d = n = d.setdefault('cow', 1) print(n) n = d.setdefault('dog', 1) print(n) print(d)
Наличие записи в словаре можно проверить с помощью оператора in .
d = print('cat' in d) # True print('cat' not in d) # False print('cow' in d) # False print('cow' not in d) # True
При присваивании другой переменной словарь не копируется, а создается вторая ссылка на него. Поэтому, чтобы скопировать словарь, следует использовать метод copy() .
>>> first = >>> second = first >>> third = first.copy() >>> >>> second['c'] = 4 >>> >>> first >>> second >>> third >>> >>> id(first) == id(second) True >>> id(first) == id(third) False
При этом метод copy() выполняет поверхностное копирование. Это значит, что если какое-либо значение словаря является изменяемым типом, то его изменение в одном словаре отразится в другом.
>>> first = >>> second = first.copy() >>> >>> first['bread'][1] += 0.75 >>> first['milk'] = [6, 58] >>> >>> first >>> second
С помощью метода update([ other ]) можно объединить два словаря в один или, используя итерируемый объект, добавить в словарь новые записи или обновить значения существующих. При совпадении ключей значения словаря, к которому применяется метод, перезаписываются на новые.
d = print(d) d.update() d.update([('rabbit', 4), ('sheep', 2)]) d.update(hen=8, cat=3, pig=5) print(d)
Словари (dict) и работа с ними. Методы словарей
Сегодня я расскажу о таком типе данных, как словари, о работе со словарями, операциях над ними, методах, о генераторах словарей.
Словари в Python — неупорядоченные коллекции произвольных объектов с доступом по ключу. Их иногда ещё называют ассоциативными массивами или хеш-таблицами.
Чтобы работать со словарём, его нужно создать. Сделать это можно несколькими способами. Во-первых, с помощью литерала:
Во-вторых, с помощью функции dict:
В-третьих, с помощью метода fromkeys:
В-четвертых, с помощью генераторов словарей, которые очень похожи на генераторы списков.
Теперь попробуем добавить записей в словарь и извлечь значения ключей:
: Как видно из примера, присвоение по новому ключу расширяет словарь, присвоение по существующему ключу перезаписывает его, а попытка извлечения несуществующего ключа порождает исключение. Для избежания исключения есть специальный метод (см. ниже), или можно перехватывать исключение.
Что же можно еще делать со словарями? Да то же самое, что и с другими объектами: встроенные функции, ключевые слова (например, циклы for и while), а также специальные методы словарей.
Методы словарей
dict.clear() — очищает словарь.
dict.copy() — возвращает копию словаря.
classmethod dict.fromkeys(seq[, value]) — создает словарь с ключами из seq и значением value (по умолчанию None).
dict.get(key[, default]) — возвращает значение ключа, но если его нет, не бросает исключение, а возвращает default (по умолчанию None).
dict.items() — возвращает пары (ключ, значение).
dict.keys() — возвращает ключи в словаре.
dict.pop(key[, default]) — удаляет ключ и возвращает значение. Если ключа нет, возвращает default (по умолчанию бросает исключение).
dict.popitem() — удаляет и возвращает пару (ключ, значение). Если словарь пуст, бросает исключение KeyError. Помните, что словари неупорядочены.
dict.setdefault(key[, default]) — возвращает значение ключа, но если его нет, не бросает исключение, а создает ключ со значением default (по умолчанию None).
dict.update([other]) — обновляет словарь, добавляя пары (ключ, значение) из other. Существующие ключи перезаписываются. Возвращает None (не новый словарь!).
dict.values() — возвращает значения в словаре.
Для вставки кода на Python в комментарий заключайте его в теги
Как удалить элемент из словаря в Python

Словари являются важной структурой данных в Python, которая позволяет хранить и организовывать информацию в виде пар ключ-значение. Однако, в процессе работы с словарями возникает необходимость удаления определенных элементов. Удаление элементов из словаря может быть полезным при обновлении данных, очистке словаря или просто управлении его содержимым.
В этой статье мы рассмотрим различные способы удаления элементов из словаря в Python. Мы изучим основные методы, которые позволяют удалять элементы по ключу или в определенном порядке. Кроме того, мы рассмотрим практические примеры использования каждого метода и поделимся лучшими практиками для эффективного удаления элементов из словаря.
Если вам интересно узнать, как удалить элементы из словаря в Python и как выбрать наиболее подходящий метод в зависимости от вашей задачи, продолжайте чтение этой статьи. Мы познакомим вас с основами и предоставим практические примеры, которые помогут вам стать более уверенным в работе с удалением элементов из словаря.
Удаление элемента по ключу с использованием оператора del
Один из наиболее простых способов удаления элемента из словаря в Python — использование оператора del . Оператор del позволяет удалить элемент из словаря по его ключу.
Пример использования оператора del для удаления элемента из словаря:
my_dict = # Удаляем элемент с ключом 'banana' del my_dict['banana'] print(my_dict)
В результате выполнения этого кода, элемент с ключом ‘banana’ будет удален из словаря my_dict . Результатом будет словарь без этого элемента:
Оператор del также может использоваться для удаления несуществующего ключа из словаря. В этом случае не будет возникать исключение, а операция просто не выполнится.
Важно отметить, что при использовании оператора del для удаления элемента из словаря, элемент полностью удаляется из памяти. Если мы попытаемся обратиться к удаленному элементу, возникнет исключение KeyError .
Использование оператора del является простым и удобным способом удаления элементов из словаря по ключу. Однако, следует быть внимательным и убедиться, что ключ, который мы хотим удалить, действительно существует в словаре, чтобы избежать ошибок.
Удаление элемента с использованием метода pop()
Python, метод pop() словаря предоставляет удобный способ удаления элемента по ключу и получения его значения одновременно. Метод pop() принимает ключ в качестве аргумента и удаляет элемент из словаря с соответствующим ключом, возвращая его значение.
Пример использования метода pop() для удаления элемента из словаря:
my_dict = # Удаляем элемент с ключом 'banana' и сохраняем его значение value = my_dict.pop('banana') print(value) # Выводим значение удаленного элемента print(my_dict) # Выводим обновленный словарь
В результате выполнения этого кода, элемент с ключом ‘banana’ будет удален из словаря my_dict , и его значение будет сохранено в переменной value . Результатом будет вывод значения удаленного элемента и обновленного словаря:
Если ключ, переданный в метод pop() , не существует в словаре, будет возникнуть исключение KeyError . Однако, мы можем предоставить второй аргумент метода pop() , который будет возвращен вместо исключения, если ключ не найден. Например:
my_dict = # Пытаемся удалить элемент с ключом 'banana', но ключ отсутствует value = my_dict.pop('banana', 'Key not found') print(value) # Выводим значение по умолчанию print(my_dict) # Выводим неизмененный словарь
В этом случае, поскольку ключ ‘banana’ отсутствует в словаре, будет возвращено значение по умолчанию, указанное вторым аргументом метода pop() . Результатом будет вывод значения по умолчанию и неизмененного словаря:
Key not found
Метод pop() предоставляет гибкую и удобную возможность удаления элементов из словаря и получения их значений. Он позволяет управлять обработкой отсутствующих ключей, что делает его полезным инструментом при работе со словарями в Python.
Удаление элемента с помощью метода popitem()
В Python, метод popitem() удаляет и возвращает пару ключ-значение, которая соответствует последнему добавленному элементу в словарь.
Пример использования метода popitem() для удаления элемента из словаря:
my_dict = # Удаляем произвольный элемент из словаря key, value = my_dict.popitem() print(key, value) # Выводим удаленную пару ключ-значение print(my_dict) # Выводим обновленный словарь
В результате выполнения этого кода, последняя добавленная пара ключ-значение будет удалена из словаря my_dict , и её ключ и значение будут сохранены в переменных key и value соответственно. Результатом будет вывод удаленной пары ключ-значение и обновленного словаря:
orange 8
Метод popitem() не принимает аргументов, и он всегда удаляет и возвращает последний добавленный элемент словаря. Метод popitem() может быть полезен при реализации стека или очереди с использованием словаря.
Важно отметить, что при попытке вызвать метод popitem() на пустом словаре возникнет исключение KeyError . Поэтому перед вызовом метода рекомендуется проверять словарь на наличие элементов.
Удаление всех элементов с использованием метода clear()
В Python, метод clear() словаря предоставляет способ удаления всех элементов из словаря, делая его пустым. При вызове этого метода все ключи и значения словаря удаляются, и словарь становится пустым.
Пример использования метода clear() для удаления всех элементов из словаря:
my_dict = # Удаляем все элементы из словаря my_dict.clear() print(my_dict) # Выводим обновленный словарь
В результате выполнения этого кода, все элементы словаря my_dict будут удалены, и словарь станет пустым. Результатом будет вывод пустого словаря:
Метод clear() не принимает аргументов и не возвращает значения. Его единственная цель — удалить все элементы из словаря.
Метод clear() может быть полезен, когда требуется очистить словарь и использовать его заново для хранения новых данных. Это удобно в ситуациях, когда словарь используется в цикле и нужно обновить его перед следующей итерацией.
Важно отметить, что после вызова метода clear() словарь становится пустым, и все ссылки на предыдущие элементы словаря становятся недействительными. Если требуется сохранить значения, хранящиеся в словаре, перед очисткой словаря необходимо скопировать его или сохранить значения в другой переменной.
Метод clear() предоставляет простой способ удаления всех элементов из словаря и создания пустого словаря для дальнейшего использования.
