W3docs

Python Dictionnaires : Modifier les Clés et Valeurs

Apprenez à modifier des valeurs, renommer des clés et mettre à jour des éléments en masse dans Python avec assignment, pop() et update().

Les dictionnaires Python vous permettent de stocker des données sous forme de paires clé-valeur et de les mettre à jour librement après leur création. Ce chapitre couvre toutes les façons pratiques de modifier des éléments de dictionnaire existants : changer une seule valeur, renommer une clé, effectuer des mises à jour en masse avec update(), et gérer les dictionnaires imbriqués — y compris les cas particuliers que vous rencontrerez dans du code réel.

Pour en savoir plus sur le fonctionnement des dictionnaires, consultez le chapitre Accéder aux éléments d'un dictionnaire. Pour ajouter de nouvelles entrées, consultez Ajouter des éléments à un dictionnaire. Pour supprimer des entrées, consultez Supprimer des éléments d'un dictionnaire.

Modifier une valeur

La modification la plus simple consiste à réassigner la valeur stockée sous une clé existante. Utilisez la clé comme index du côté gauche d'une affectation :

python— editable, runs on the server

Si la clé existe déjà, la valeur est écrasée en place. Les autres entrées ne sont pas affectées et le dictionnaire préserve son ordre d'insertion (Python 3.7+).

Que se passe-t-il lorsque la clé n'existe pas ?

Si vous utilisez l'affectation avec une clé qui n'est pas déjà dans le dictionnaire, Python crée silencieusement une nouvelle entrée au lieu de lever une erreur :

prices = {'apple': 1.00, 'banana': 0.50}
prices['mango'] = 2.50   # 'mango' did not exist — a new entry is created
print(prices)
# {'apple': 1.00, 'banana': 0.50, 'mango': 2.50}

Lorsque vous souhaitez mettre à jour uniquement si une clé existe, vérifiez d'abord avec in :

if 'banana' in prices:
    prices['banana'] = 0.75

Mise à jour en masse avec update()

dict.update() vous permet de modifier plusieurs valeurs à la fois. Passez-lui un dictionnaire (ou des arguments nommés) de paires clé-valeur à appliquer :

inventory = {'apple': 10, 'banana': 5, 'orange': 8}
inventory.update({'banana': 12, 'orange': 3})
print(inventory)
# {'apple': 10, 'banana': 12, 'orange': 3}

Les clés présentes dans l'argument écrasent les valeurs existantes ; les clés non mentionnées restent inchangées. Vous pouvez également passer des arguments nommés directement :

inventory.update(apple=20, banana=15)
print(inventory)
# {'apple': 20, 'banana': 15, 'orange': 3}

update() ajoute également toutes les clés de l'argument qui n'existent pas encore dans le dictionnaire cible, ce qui le rend utile pour fusionner deux dictionnaires ensemble.

Renommer (Changer) une clé

Les clés de dictionnaire sont des références immuables — vous ne pouvez pas renommer une clé directement. Le schéma standard consiste à ajouter une nouvelle clé avec l'ancienne valeur et à supprimer l'ancienne clé. La méthode pop() fait les deux en une seule expression :

python— editable, runs on the server

pop('banana') renvoie 2 et supprime l'entrée 'banana'. Assigner cette valeur de retour à my_dict['pear'] crée l'entrée renommée.

Notez que la clé renommée apparaît à la fin du dictionnaire, et non à la position d'origine de 'banana', car il s'agit d'une nouvelle clé insérée.

Renommer une clé dont vous n'êtes pas sûr qu'elle existe

Si la clé peut être absente, pop() lève une KeyError. Passez une valeur par défaut comme second argument pour éviter l'exception :

value = my_dict.pop('grape', None)  # returns None if 'grape' is missing
if value is not None:
    my_dict['kiwi'] = value

Modifier à la fois la clé et la valeur

Combinez le schéma de renommage avec une réassignation de valeur pour modifier les deux à la fois :

python— editable, runs on the server

Ou regroupez-le en une seule étape en assignant directement la valeur souhaitée au lieu de la valeur extraite :

my_dict = {'apple': 1, 'banana': 2, 'orange': 3}
my_dict.pop('banana')          # remove old key (discard value)
my_dict['pear'] = 4            # insert new key with new value
print(my_dict)
# {'apple': 1, 'orange': 3, 'pear': 4}

Mettre à jour des éléments dans un dictionnaire imbriqué

Lorsqu'un dictionnaire contient d'autres dictionnaires comme valeurs, utilisez l'indexation chaînée pour atteindre la valeur interne :

catalog = {
    'apple':  {'price': 1.00, 'stock': 50},
    'banana': {'price': 0.50, 'stock': 30},
}

# Update only the price of 'banana'
catalog['banana']['price'] = 0.75
print(catalog['banana'])
# {'price': 0.75, 'stock': 30}

Vous pouvez également appeler update() sur le dictionnaire interne :

catalog['apple'].update({'price': 1.20, 'stock': 45})
print(catalog['apple'])
# {'price': 1.20, 'stock': 45}

Pièges courants

SituationCe qui se passeSolution
Affectation à une clé manquanteCrée une nouvelle entrée (sans erreur)Vérifiez if key in d d'abord si vous voulez seulement mettre à jour
Appel de pop() sur une clé manquanteLève une KeyErrorUtilisez d.pop(key, default)
Le renommage ne conserve pas la position d'origineLa nouvelle clé va à la finSi l'ordre importe, reconstruisez avec une compréhension de dictionnaire
update() avec des clés qui se chevauchentÉcrase silencieusementC'est intentionnel — c'est le but de update()

Reconstruire pour préserver l'ordre des clés

Si vous avez besoin que la clé renommée reste à sa position d'origine, reconstruisez le dictionnaire avec une compréhension :

my_dict = {'apple': 1, 'banana': 2, 'orange': 3}
my_dict = {
    ('pear' if k == 'banana' else k): v
    for k, v in my_dict.items()
}
print(my_dict)
# {'apple': 1, 'pear': 2, 'orange': 3}

Cette méthode itère sur chaque entrée existante et émet la clé renommée uniquement là où la condition est vraie, laissant tout le reste inchangé.

Pratique

Pratique
En Python, comment peut-on modifier les éléments d'une liste ?
En Python, comment peut-on modifier les éléments d'une liste ?
Was this page helpful?