W3docs

Supprimer des éléments

Apprenez toutes les façons de supprimer des éléments d'un dictionnaire Python : pop(), popitem(), del, clear() et les compréhensions de dictionnaire, avec des exemples.

Les dictionnaires Python sont des structures clé-valeur mutables, ce qui signifie que vous pouvez ajouter, modifier et supprimer des entrées à tout moment. Ce chapitre couvre toutes les techniques standard pour supprimer des éléments d'un dictionnaire — pop(), popitem(), l'instruction del, clear(), et les compréhensions de dictionnaire — avec des notes pratiques sur le moment où chaque approche est la plus adaptée et comment éviter les erreurs courantes.

Comparaison rapide

TechniqueSupprimeRetourneLève une erreur si la clé est absente
dict.pop(key)Une paire clé-valeurLa valeur suppriméeKeyError (sauf si une valeur par défaut est fournie)
dict.pop(key, default)Une paire clé-valeurLa valeur supprimée ou la valeur par défautJamais
dict.popitem()La dernière paire inséréeUn tuple (key, value)KeyError si le dictionnaire est vide
del dict[key]Une paire clé-valeurRienKeyError
dict.clear()Toutes les pairesRienJamais
Compréhension de dictPaires sélectionnéesNouveau dictionnaireJamais

Supprimer un élément unique avec pop()

dict.pop(key) supprime la paire clé-valeur pour la clé donnée et retourne la valeur qui y était stockée. Cela le rend utile lorsque vous avez besoin de la valeur pour un traitement ultérieur après l'avoir supprimée.

Supprimer une clé et capturer sa valeur

python— editable, runs on the server

Si la clé n'existe pas, pop() lève une KeyError :

inventory = {'apples': 10}
inventory.pop('oranges')  # KeyError: 'oranges'

Utiliser une valeur par défaut pour éviter KeyError

Passez un second argument à pop() comme valeur de secours. Lorsque la clé est absente, pop() retourne la valeur par défaut au lieu de lever une erreur — le dictionnaire reste inchangé.

Suppression sécurisée avec une valeur par défaut

inventory = {'apples': 10, 'cherries': 20}
removed = inventory.pop('oranges', 0)
print(removed)    # 0
print(inventory)  # {'apples': 10, 'cherries': 20}

Ce modèle est une alternative propre à la vérification if key in dict avant d'appeler pop().

Supprimer le dernier élément inséré avec popitem()

dict.popitem() supprime et retourne la dernière paire clé-valeur insérée sous forme de tuple (key, value). C'était l'outil principal pour itérer et consommer un dictionnaire avant que Python 3.7 ne garantisse l'ordre d'insertion.

Extraire le dernier élément inséré

scores = {'alice': 95, 'bob': 82, 'carol': 78}
last_item = scores.popitem()
print(last_item)  # ('carol', 78)
print(scores)     # {'alice': 95, 'bob': 82}

popitem() lève une KeyError si le dictionnaire est vide. Utilisez-le lorsque vous souhaitez traiter et consommer tous les éléments un par un (à la manière d'une pile), ou lorsque vous avez uniquement besoin de supprimer l'entrée la plus récemment ajoutée.

Supprimer un élément avec del

L'instruction del supprime une paire clé-valeur par sa clé sans retourner de valeur. Utilisez-la lorsque vous avez uniquement besoin de supprimer l'entrée et que la valeur supprimée ne vous intéresse pas.

Supprimer une clé avec del

python— editable, runs on the server

Comme pop() sans valeur par défaut, del lève une KeyError si la clé est absente :

del user['phone']  # KeyError: 'phone'

del vs pop() — lequel utiliser ?

  • Utilisez del lorsque vous souhaitez supprimer l'élément sans jamais avoir besoin de sa valeur.
  • Utilisez pop() lorsque vous avez besoin de la valeur supprimée, ou lorsque vous souhaitez une opération sans effet si la clé peut être absente.

Supprimer tous les éléments avec clear()

dict.clear() vide le dictionnaire en place, laissant un {} vide. L'objet dictionnaire lui-même existe toujours, donc toute autre variable faisant référence au même dictionnaire verra également un dictionnaire vide.

Effacer toutes les entrées

config = {'host': 'localhost', 'port': 5432, 'debug': True}
config.clear()
print(config)  # {}

Comparez cela à la réassignation config = {} : la réassignation crée un nouveau objet dictionnaire et laisse toutes les autres références pointer vers l'ancien (toujours rempli). clear() modifie le même objet.

config = {'host': 'localhost', 'port': 5432}
alias = config          # alias and config point to the same dict

config = {}             # only config is updated; alias still has data
print(alias)            # {'host': 'localhost', 'port': 5432}

config = {'host': 'localhost', 'port': 5432}
alias = config
config.clear()          # modifies the shared object
print(alias)            # {}

Supprimer plusieurs clés spécifiques

Python ne dispose d'aucune méthode intégrée pour supprimer plusieurs clés à la fois, mais il existe deux approches idiomatiques.

Boucle avec pop()

settings = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
to_remove = ['b', 'd']

for key in to_remove:
    settings.pop(key, None)  # None default = safe even if key is absent

print(settings)  # {'a': 1, 'c': 3}

Compréhension de dictionnaire

Une compréhension de dictionnaire construit un nouveau dictionnaire qui exclut les clés indésirables. C'est préférable lorsque vous souhaitez conserver l'original intact.

Filtrer un dictionnaire par compréhension

python— editable, runs on the server

Vous pouvez également filtrer par valeur plutôt que par clé :

scores = {'alice': 95, 'bob': 40, 'carol': 78, 'dan': 35}
passing = {name: score for name, score in scores.items() if score >= 50}
print(passing)  # {'alice': 95, 'carol': 78}

Supprimer des éléments lors d'une itération — le piège courant

Modifier un dictionnaire pendant l'itération lève une RuntimeError en Python 3 :

data = {'a': 1, 'b': 2, 'c': 3}

# This raises RuntimeError: dictionary changed size during iteration
for key in data:
    if data[key] < 2:
        del data[key]

Le modèle sûr consiste à itérer sur une copie des clés :

data = {'a': 1, 'b': 2, 'c': 3}

for key in list(data):           # list() snapshots the keys
    if data[key] < 2:
        del data[key]

print(data)  # {'b': 2, 'c': 3}

Vous pouvez également construire un nouveau dictionnaire avec une compréhension (illustré ci-dessus dans la section compréhension) — c'est souvent l'approche la plus propre.

Pour en savoir plus sur l'itération sécurisée des dictionnaires, consultez Loop Dictionaries.

Choisir la bonne méthode

  • Besoin de la valeur supprimée ? Utilisez pop(key).
  • La clé pourrait ne pas exister ? Utilisez pop(key, default) pour éviter une KeyError.
  • Juste supprimer, sans besoin de la valeur ? Utilisez del dict[key].
  • Supprimer la dernière entrée insérée ? Utilisez popitem().
  • Tout effacer ? Utilisez clear().
  • Supprimer selon une condition / plusieurs clés ? Utilisez une compréhension de dictionnaire ou une boucle for key in list(dict).

Pratique

Pratique
Quelle méthode supprime une clé d'un dictionnaire Python et retourne sa valeur ?
Quelle méthode supprime une clé d'un dictionnaire Python et retourne sa valeur ?
Was this page helpful?