Suppression d'une clé d'un python dict
ou defaultdict
dans python est O(1) opération, comme mentionné ici et ici . Pour supprimer une clé de OrderedDict
, nous pouvons soit utiliser del d[key]
soit utiliser popitem()
méthode, comme mentionné dans the docs .
Quelle est l'implémentation sous-jacente de OrderedDict
et la complexité temporelle de l'opération del
?
Edit: Cette réponse performances OrderedDict (par rapport à deque) , fait référence à la complexité de del
dans OrderedDict
comme étant O (1). Cependant, comment pouvons-nous le justifier au niveau des détails de mise en œuvre?
implémentation de OrderedDict.__delitem__
in Python 3.7 est le suivant:
def __delitem__(self, key, dict_delitem=dict.__delitem__):
'od.__delitem__(y) <==> del od[y]'
# Deleting an existing item uses self.__map to find the link which gets
# removed by updating the links in the predecessor and successor nodes.
dict_delitem(self, key)
link = self.__map.pop(key)
link_prev = link.prev
link_next = link.next
link_prev.next = link_next
link_next.prev = link_prev
link.prev = None
link.next = None
Ce code fait 3 choses:
Étant donné que toutes les opérations ci-dessus prennent un temps constant, la complexité de OrderedDict.__delitem__
est également constant.