Comment retirer un élément d'un dictionnaire Python
-
L’instruction
del
pour supprimer un élément du dictionnaire Python -
La fonction
dict.pop()
pour supprimer un élément du dictionnaire Python - Supprimer plusieurs éléments d’un dictionnaire Python
- Caractéristiques de performance
Parfois, votre dictionnaire Python contient une ou plusieurs clés que vous voulez supprimer. Vous pouvez le faire de plusieurs façons différentes.
L’instruction del
pour supprimer un élément du dictionnaire Python
Une approche consiste à utiliser l’instruction del
intégrée de Python.
>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> del meal['fats']
>>> meal
{'proteins': 10, 'carbohydrates': 80}
Notez que si vous essayez de supprimer un élément par une clé qui n’est pas présente dans le dictionnaire,
Le runtime Python lancera une KeyError
.
>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> del meal['water']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'water'
La fonction dict.pop()
pour supprimer un élément du dictionnaire Python
Une autre approche est d’utiliser la fonction dict.pop()
.
L’avantage de cette méthode est qu’elle vous permet de spécifier
la valeur par défaut à retourner si la clé demandée n’existe pas
dans le dictionnaire.
>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> meal.pop('water', 3000)
3000
>>> meal.pop('fats', 3000)
10
>>> meal
{'proteins': 10, 'carbohydrates': 80}
Notez que si vous ne fournissez pas la valeur par défaut à retourner et que le
n’existe pas, vous obtiendrez également une erreur d’exécution, comme del
ci-dessus.
>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> meal.pop('water')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'water'
Supprimer plusieurs éléments d’un dictionnaire Python
Si vous devez supprimer plusieurs éléments d’un dictionnaire en une seule fois,
Python 3 offre des listes de compréhension, que vous pouvez utiliser à cette fin.
>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> [meal.pop(key) for key in ['fats', 'proteins']]
[10, 10]
>>> meal
{'carbohydrates': 80}
Notez qu’avec l’approche ci-dessus, Python plantera toujours si une des clés passées n’est pas dans le dictionnaire.
Pour contourner ce problème, vous pouvez donner un second argument à dict.pop()
comme valeur de retour par défaut.
>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> [meal.pop(key, None) for key in ['water', 'sugars']]
[None, None]
>>> meal
{'fats': 10, 'proteins': 10, 'carbohydrates': 80}
Caractéristiques de performance
L’utilisation des instructions del
et dict.pop()
ont des caractéristiques de performance différentes.
>>> from timeit import timeit
>>> timeit("meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}; del meal['fats']")
0.12977536499965936
>>> timeit("meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}; meal.pop('fats', None)")
0.21620816600079706
Comme le montre le timing ci-dessus, l’instruction del
est presque deux fois plus rapide.
Cependant, dict.pop()
avec une valeur de repli est plus sûr car il vous aidera à éviter les erreurs d’exécution.
Utilisez la première si vous êtes sûr que les clés doivent être présentes dans le dictionnaire, et préférez la seconde sinon.
Article connexe - Python Dictionary
- Comment vérifier si une clé existe dans un dictionnaire en Python
- Convertir un dictionnaire en liste en Python
- Comment obtenir tous les fichiers d'un répertoire
- Comment trouver la valeur maximale dans le dictionnaire Python
- Comment trier un dictionnaire Python par valeur
- Comment fusionner deux dictionnaires en Python 2 et 3