Я пытаюсь удалить ключ и значение из OrderedDict
, но когда я использую:
dictionary.popitem(key)
он удаляет последний ключ и значение, даже если указан другой ключ. Можно ли убрать ключ посередине если словарь?
Я пытаюсь удалить ключ и значение из OrderedDict
, но когда я использую:
dictionary.popitem(key)
он удаляет последний ключ и значение, даже если указан другой ключ. Можно ли убрать ключ посередине если словарь?
Да, вы можете использовать del
:
del dct[key]
Ниже представлена демонстрация:
>>> from collections import OrderedDict
>>> dct = OrderedDict()
>>> dct['a'] = 1
>>> dct['b'] = 2
>>> dct['c'] = 3
>>> dct
OrderedDict([('a', 1), ('b', 2), ('c', 3)])
>>> del dct['b']
>>> dct
OrderedDict([('a', 1), ('c', 3)])
>>>
Фактически, вы всегда должны использовать del
для удаления элемента из словаря. dict.pop
и dict.popitem
используются для удаления элемента и возврата удаленного элемента, чтобы его можно было сохранить на потом. Однако если вам не нужно его сохранять, то использование этих методов менее эффективно.
Вы можете использовать pop, popitem по умолчанию удаляет последний:
d = OrderedDict([(1,2),(3,4)])
d.pop(your_key)
OrderedDict.popitem
: The пары возвращаются в порядке ЛИФО, еслиlast
верно, или в порядке ФИФО, если нет. - person jonrsharpe   schedule 26.11.2014dictioary.popitem()
не принимает аргумент, используйтеdictionary.pop(key)
. - person martineau   schedule 26.11.2014.popitem
действительно принимает аргумент,last
, иначе OP получитTypeError
, а не неожиданное поведение - person jonrsharpe   schedule 26.11.2014OrderedDict.popitem()
действительно принимает необязательный аргумент, но это не ключ в словаре, поэтому OP должен использовать унаследованныйdict.pop(key)
, особенно если они хотят, чтобы в результате возвращалось связанное значение удаляемого ключа. - person martineau   schedule 26.11.2014