La meilleure méthode pour supprimer un élément à partir d'un dict
En Python il existe au moins deux méthodes pour supprimer un élément à partir d'une 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 serait de supprimer l'élément de la dict.
Je me demande quelles sont les méthodes que je devrais utiliser et pourquoi. Aussi, ce qui est plus pythonic?
Vous devez vous connecter pour publier un commentaire.
Utilisation
d.pop
si vous voulez la capture de l'élément supprimé, comme dansitem = d.pop("keyA")
.Utilisation
del
si vous voulez supprimer un élément à partir d'un dictionnaire.Si vous voulez supprimer, supprimer une erreur si la clé n'est pas dans le dictionnaire:
if thekey in thedict: del thedict[thekey]
.pop
sera légèrement plus lente que la del depuis ça va se traduire par un appel de fonction plutôt qu'une primitive.del
quand je veux juste supprimer un élément.if
ou en appelant.pop(key, None)?
🙂if
à être plus lent, il provoque une autre recherche dans le dictionnaire. Une exception serait si la vérification échoue la plupart du temps.try: del d[key] except: pass
import timeit
puis faire untimeit.timeit(stmt="if 'two' in a: del a['two']", setup="a={'one': 1, 'two': 2, 'three': 3}", number=1000000)
ettimeit.timeit(stmt="a.pop('two', None)", setup="a={'one': 1, 'two': 2, 'three': 3}", number=1000000)
except KeyError
, ne jamais avoir un "nuexcept
". Mais dans ce cas, il est plus court, plus rapide, plus claire et autonome pour tester l'appartenance d'abord:if thekey in thedict:
pop
renvoie la valeur de la clé supprimée.Fondamentalement,
d.pop(key)
évalue commex = d[key]; del d[key]; return x
.pop
lorsque vous besoin de connaître la valeur de la clé suppriméedel
sinonJe suppose qu'il vient vers le bas si vous avez besoin de l'élément supprimé est retourné ou pas.
pop
renvoie l'élément supprimé,del
ne pas.À l'aide d'une très simple minuterie j'ai testé l'efficacité de ces fonctions: