75 votes

Meilleure méthode pour supprimer un élément d'un dict

En Python, il existe au moins deux méthodes pour supprimer un élément d'un dict à l'aide d'une clé.

 d = {"keyA": 123, "keyB": 456, "keyC": 789}

#remove via pop
d.pop("keyA")

#remove via del
del d["keyB"]

Les deux méthodes supprimeraient l'élément du dict.

Je me demande quelle est la différence entre ces méthodes et dans quels types de situations je devrais utiliser l'une ou l'autre.

107voto

Wang Dingwei Points 1633
  • Utilisez d.pop si vous souhaitez capturer l'élément supprimé , comme dans item = d.pop("keyA") .

  • Utilisez del si vous souhaitez supprimer un élément d'un dictionnaire .

  • Si vous souhaitez supprimer, supprimer une erreur si la clé n'est pas dans le dictionnaire : if thekey in thedict: del thedict[thekey]

20voto

Fenikso Points 4270

pop renvoie la valeur de la clé supprimée. Fondamentalement, d.pop(key) évalué comme x = d[key]; del d[key]; return x .

  • Utilisez pop lorsque vous avez besoin de connaître la valeur de la clé supprimée
  • Utilisez del sinon

9voto

ruohola Points 15945

La plupart du temps, le plus utile est en fait :

 d.pop("keyC", None)

qui supprime la clé du dict, mais ne soulève pas de KeyError si elle n'existait pas.

L'expression renvoie également la valeur sous la clé, ou None s'il n'y en avait pas.

3voto

Tobias Einarsson Points 537

Je suppose qu'il s'agit de savoir si vous avez besoin que l'article supprimé soit renvoyé ou non. pop renvoie l'élément supprimé, del ne le fait pas.

1voto

griswolf Points 51

A l'aide d'un timer très simple j'ai testé l'efficacité de ces fonctions :

 def del_er(nums,adict):
     for n in nums:
        del adict[n]
def pop_er(nums,adict):
     for n in nums:
        adict.pop(n)

Sur mon système, en utilisant 100 000 éléments dict et 75 000 index sélectionnés au hasard, del_er a fonctionné en environ 0,330 seconde, pop_er a fonctionné en environ 0,412 seconde.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X