Comment retirer un élément d'un dictionnaire Python

Aliaksei Yursha 30 janvier 2023
  1. L’instruction del pour supprimer un élément du dictionnaire Python
  2. La fonction dict.pop() pour supprimer un élément du dictionnaire Python
  3. Supprimer plusieurs éléments d’un dictionnaire Python
  4. Caractéristiques de performance
Comment retirer un élément d'un dictionnaire Python

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