Перейти к содержимому

Что делает метод словаря popitem в python

  • автор:

Получить, а потом удалить пару ключ/значение из словаря 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 3 логотип

Сегодня я расскажу о таком типе данных, как словари, о работе со словарями, операциях над ними, методах, о генераторах словарей.

Словари в 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() предоставляет простой способ удаления всех элементов из словаря и создания пустого словаря для дальнейшего использования.

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

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