2014-11-26 18 views
18

próbuję wyjąć klucz i wartość z OrderedDict ale kiedy używam:Usuń klucz i wartość z OrderedDict

dictionary.popitem(key) 

usuwa ostatni klucz i wartość, nawet gdy jest dostarczony inny klucz. Czy jest możliwe usunięcie klucza w środku, jeśli słownik?

+1

przeczytane [docs dla 'OrderedDict.popitem'] (https://docs.python.org/2/library/collections. html # collections.OrderedDict.popitem): * "Pary są zwracane w kolejności LIFO, jeśli" last "jest prawdziwe, lub FIFO, jeśli fałsz." * – jonrsharpe

+0

'dictioary.popitem()' nie przyjmuje argumentu, użyj 'słownika .pop (klawisz) '. – martineau

+0

@martineau powinieneś także podążać za tym linkiem - '.popitem' * robi * bierze argument,' last', w przeciwnym razie OP uzyskałby 'TypeError' zamiast nieoczekiwanego zachowania – jonrsharpe

Odpowiedz

28

Tak, można użyć del:

del dct[key] 

Poniżej jest wykazanie:

>>> 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)]) 
>>> 

W rzeczywistości, należy zawsze używać del aby usunąć pozycję ze słownika. dict.pop i dict.popitem służą do usuwania pozycji i zwracania usuniętego elementu, aby można go było zapisać na później. Jeśli jednak nie musisz go zapisywać, użycie tych metod jest mniej wydajne.

4

Można użyć pop, popitem usuwa ostatni domyślnie:

d = OrderedDict([(1,2),(3,4)]) 
d.pop(your_key) 
Powiązane problemy