HOWTO · Python
Changer la clé dans un dictionnaire en Python
Découvrez comment renommer une ou plusieurs clés d'un dictionnaire Python tout en conservant leurs valeurs.
Sur cette page
Pour renommer une clé dans un dictionnaire Python, affectez sa valeur à la nouvelle clé, puis supprimez l’ancienne. Utilisez dict.pop() pour récupérer la valeur et supprimer l’ancienne entrée en une seule opération. Pour plusieurs modifications ou des renommages conditionnels, créez un nouveau dictionnaire à partir d’une correspondance entre anciennes et nouvelles clés. Ces méthodes conservent les valeurs associées ; choisissez selon que vous souhaitez modifier le dictionnaire d’origine ou créer un résultat distinct.
Renommer une clé en affectant sa valeur à une nouvelle clé, puis en supprimant l’ancienne
Une clé de dictionnaire ne se modifie pas directement. Pour un renommage simple, récupérez la valeur à l’aide de l’ancienne clé, affectez-la à la nouvelle, puis supprimez l’ancienne entrée :
fruit = {"A": "Apple", "B": "Banana"}
fruit["C"] = fruit["B"]
del fruit["B"]
print(fruit)
Ici, B devient C et la valeur "Banana" est conservée. Cette opération modifie directement fruit. Si C existe déjà, l’affectation remplace sa valeur actuelle ; vérifiez donc que la clé de destination est disponible lorsque cela est important pour vos données.
Renommer une clé avec dict.pop()
dict.pop() supprime la clé indiquée et renvoie sa valeur. Vous pouvez affecter directement cette valeur à la nouvelle clé :
person = {"first_name": "John", "last_name": "Doe", "age": 30}
person["given_name"] = person.pop("first_name")
Après l’affectation, person contient la clé given_name associée à l’ancienne valeur de first_name. Comme avec une affectation directe, une valeur déjà associée à given_name sera remplacée. Si l’ancienne clé peut être absente, fournissez une valeur par défaut à pop, par exemple person.pop("first_name", None) ; sinon, l’appel avec une clé absente déclenche une exception KeyError.
Renommer une ou plusieurs clés en reconstruisant un dictionnaire
Pour plusieurs renommages ou des renommages conditionnels, associez chaque ancienne clé à sa nouvelle clé, puis utilisez une compréhension de dictionnaire. Les clés absentes de cette correspondance restent inchangées :
original = {"a": 1, "b": 2, "c": 3}
key_mapping = {"a": "alpha", "b": "beta"}
renamed = {key_mapping.get(key, key): value for key, value in original.items()}
Ici, renamed contient alpha, beta et c avec leurs valeurs d’origine. La compréhension crée un nouveau dictionnaire ; original reste donc disponible sans ces modifications. Si plusieurs clés sources aboutissent à la même clé de destination, la valeur affectée en dernier dans la compréhension remplace la précédente. Pour conserver toutes les valeurs, veillez à ce que la correspondance produise des clés distinctes. Cette approche est particulièrement utile lorsqu’un renommage dépend d’une règle appliquée à chaque clé ou lorsque plusieurs noms connus doivent être modifiés ensemble. Avant de reconstruire le dictionnaire, vérifiez la correspondance si certaines clés d’origine risquent d’aboutir au même nom.
Cette méthode convient aussi aux transformations conditionnelles : remplacez key_mapping.get(key, key) par une expression qui renvoie la clé souhaitée pour chaque élément. L’expression doit être déterministe pour les données traitées, et les clés obtenues doivent être hachables, comme toute clé de dictionnaire.
Renommer les colonnes d’un DataFrame lorsque les clés du dictionnaire représentent des données tabulaires
Lorsque les clés d’un dictionnaire correspondent aux noms de colonnes d’un jeu de données tabulaire, utilisez DataFrame.rename(columns=...) pour renommer ces colonnes. Créer un DataFrame à partir d’un dictionnaire ne renomme pas les clés du dictionnaire d’origine : cela crée un objet tabulaire distinct. Par exemple, vous pouvez écrire df = df.rename(columns={"a": "alpha"}). Cette opération renvoie un DataFrame dont la colonne a été renommée et laisse le dictionnaire source inchangé. Si vous souhaitez obtenir un dictionnaire à partir du résultat, choisissez une orientation explicite, par exemple df.to_dict(orient="list") lorsque les valeurs sont des listes de colonnes. Cette opération propre à Pandas nécessite que Pandas soit disponible dans votre environnement. Pour les dictionnaires ordinaires, les méthodes intégrées — affectation, dict.pop() ou compréhension — évitent de convertir la structure de données et sont généralement plus simples.