2014-11-26 10 views
18

Ich versuche, einen Schlüssel und den Wert von einem OrderedDict zu entfernen, aber wenn ich benutze:Löschen einen Schlüssel und der Wert von einem OrderedDict

dictionary.popitem(key) 

es entfernt den letzten Schlüssel und Wert, auch wenn ein anderer Schlüssel geliefert wird. Ist es möglich, einen Schlüssel in der Mitte zu entfernen, wenn das Wörterbuch?

+1

Read [die Docs für 'OrderedDict.popitem'] (https://docs.python.org/2/library/collections. html # collections.OrderedDict.popitem): * "Die Paare werden in LIFO-Reihenfolge zurückgegeben, wenn' last 'wahr ist oder FIFO-Reihenfolge wenn false. "* – jonrsharpe

+0

' dicioary.popitem() 'braucht kein Argument, benutze' dictionary .pop (Schlüssel) '. – martineau

+0

@martineau sollten Sie auch diesem Link folgen - '.popitem' * nimmt * ein Argument,' last', sonst würde das OP einen 'TypeError' anstelle eines unerwarteten Verhaltens bekommen – jonrsharpe

Antwort

28

Ja, können Sie del verwenden:

del dct[key] 

Nachfolgend finden Sie eine Demonstration:

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

In der Tat, sollten Sie immer del verwenden, um ein Element aus einem Wörterbuch zu entfernen. dict.pop und dict.popitem werden verwendet, um einen Artikel zu entfernen und das entfernte Objekt zurückzugeben, damit es für später gespeichert werden kann. Wenn Sie es jedoch nicht speichern müssen, ist die Verwendung dieser Methoden weniger effizient.

4

Sie pop verwenden können, entfernt popitem die letzte von Standard:

d = OrderedDict([(1,2),(3,4)]) 
d.pop(your_key) 
Verwandte Themen