Что делает метод словаря popitem в python
Перейти к содержимому

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

  • автор:

dict.popitem

Возвращает произвольную пару (ключ, значение), удаляя её из словаря.

dict.popitem()

-> tuple Кортеж вида (ключ, значение)

+py3.7 Возвращает пару (ключ, значение), которая была добавлена в словарь последней, удаляя её из словаря.

 my_dict =  
item = my_dict.popitem()
item # ('b', 2)
my_dict #

На заметку

До -py3.7 возращалась и удалялась произвольная пара.

Синонимы поиска: dict.popitem, dict, popitem

Получить, а потом удалить пару ключ/значение из словаря 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)
  • Генератор словаря и его использование
  • Фильтр словаря по ключам и/или значениям
  • Словарь как фабрика функций

Метод popitem

Метод popitem удаляет пару ключ-значение с конца словаря, при этом возвращая кортеж из удаленной пары. В параметре метода ничего не задаем.

Синтаксис

список.popitem()

Пример

Давайте применим метод popitem к нашему словарю:

dct = < 'a': 1, 'b': 2, 'c': 3 >print(dct.popitem()) print(dct)

Результат выполнения кода:

Пример

А теперь давайте попробуем применить метод popitem к пустому словарю:

dct = <> print(dct.popitem()) print(dct)

Результат выполнения кода:

Traceback (most recent call last): File «C:\python\file.py», line 2, in print(dct.popitem()) ^^^^^^^^^^^^^ KeyError: ‘popitem(): dictionary is empty’

Смотрите также

  • метод items ,
    который возвращает кортеж ключ-значение указанного словаря
  • метод get ,
    который возвращает значение словаря по ключу
  • метод update ,
    который обновляет словарь ключами и значениями другого словаря

Методы словарей и операции над словарями в 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)

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

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