Skip to content

Changer la clé d’un dictionnaire en Python

Cet article décrit comment changer la clé d’un dictionnaire (dict) en Python.

  • Ajouter un nouvel élément, puis supprimer l’ancien
    • Avec l’instruction sup
    • Avec la méthode pop()
  • Définir une fonction pour changer la clé d’un dictionnaire
    • Si l’ancienne clé n’existe pas, ajouter un nouvel élément
    • Si l’ancienne clé n’existe pas, ne rien faire

Si vous souhaitez modifier la valeur, spécifiez simplement la clé et attribuez une nouvelle valeur. Voir l’article suivant pour plus de détails.

Ajouter un nouvel élément, puis supprimer l’ancien

dict n’a aucune méthode pour changer la clé, alors ajoutez un nouvel élément avec la nouvelle clé et la valeur d’origine, puis supprimez l’ancien élément.

Pour plus d’informations sur la suppression d’un élément du dictionnaire, consultez l’article suivant

Avec l’instruction sup

Si vous utilisez l’instruction del, vous pouvez effectuer les opérations suivantes.

d = {'k1': 1, 'k2': 2, 'k3': 3}

d['k10'] = d['k1']
del d['k1']

print(d)
# {'k2': 2, 'k3': 3, 'k10': 1}

Avec la méthode pop()

La méthode pop() peut être utilisée pour supprimer un élément et obtenir sa valeur simultanément.

d = {'k1': 1, 'k2': 2, 'k3': 3}

print(d.pop('k1'))
# 1

print(d)
# {'k2': 2, 'k3': 3}

Utiliser pop() est plus simple que d’utiliser del.

d = {'k1': 1, 'k2': 2, 'k3': 3}

d['k10'] = d.pop('k1')

print(d)
# {'k2': 2, 'k3': 3, 'k10': 1}

Notez que par défaut, une erreur se produit si une clé inexistante est spécifiée comme premier argument de pop().

d = {'k1': 1, 'k2': 2, 'k3': 3}

# print(d.pop('k10'))
# KeyError: 'k10'

Si le deuxième argument de pop() est spécifié, il renvoie la valeur sans erreur. L’objet dictionnaire d’origine reste inchangé.

print(d.pop('k10', None))
# None

print(d)
# {'k1': 1, 'k2': 2, 'k3': 3}

Cela peut être utilisé pour définir une valeur par défaut si vous essayez de modifier une clé qui n’existe pas. Il est utilisé dans la fonction décrite ci-après.

Définir une fonction pour changer la clé d’un dictionnaire

Voici quelques exemples de fonctions pour changer la clé d’un dictionnaire.

Si l’ancienne clé n’existe pas, ajouter un nouvel élément

Avec pop(), par exemple, la fonction suivante peut être définie.

Le premier argument est le dictionnaire cible, le second est l’ancienne clé et le troisième est la nouvelle clé.

def change_dict_key(d, old_key, new_key, default_value=None):
    d[new_key] = d.pop(old_key, default_value)

d = {'k1': 1, 'k2': 2, 'k3': 3}
change_dict_key(d, 'k1', 'k10')
print(d)
# {'k2': 2, 'k3': 3, 'k10': 1}

Si une clé inexistante est spécifiée comme ancienne clé, elle est ajoutée en tant que nouvel élément avec la valeur spécifiée dans le quatrième argument (Aucune par défaut).

d = {'k1': 1, 'k2': 2, 'k3': 3}
change_dict_key(d, 'k10', 'k100')
print(d)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k100': None}

d = {'k1': 1, 'k2': 2, 'k3': 3}
change_dict_key(d, 'k10', 'k100', 100)
print(d)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k100': 100}

Si une clé existante est spécifiée comme troisième argument (nouvelle clé), la valeur de la clé existante est écrasée.

d = {'k1': 1, 'k2': 2, 'k3': 3}
change_dict_key(d, 'k1', 'k2')
print(d)
# {'k2': 1, 'k3': 3}

Si vous souhaitez conserver la valeur d’origine lorsque vous spécifiez une clé existante en tant que nouvelle clé, utilisez la méthode setdefault().

def change_dict_key_setdefault(d, old_key, new_key, default_value=None):
    d.setdefault(new_key, d.pop(old_key, default_value))

d = {'k1': 1, 'k2': 2, 'k3': 3}
change_dict_key_setdefault(d, 'k1', 'k2')
print(d)
# {'k2': 2, 'k3': 3}

Si la nouvelle clé n’est pas une clé existante, le comportement est le même que la première fonction.

d = {'k1': 1, 'k2': 2, 'k3': 3}
change_dict_key_setdefault(d, 'k1', 'k10')
print(d)
# {'k2': 2, 'k3': 3, 'k10': 1}

d = {'k1': 1, 'k2': 2, 'k3': 3}
change_dict_key_setdefault(d, 'k10', 'k100')
print(d)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k100': None}

Si l’ancienne clé n’existe pas, ne rien faire

Si vous ne voulez rien faire lorsque la clé spécifiée n’existe pas, utilisez l’opérateur in.

def change_dict_key_exist(d, old_key, new_key):
    if old_key in d:
        d[new_key] = d.pop(old_key)

d = {'k1': 1, 'k2': 2, 'k3': 3}
change_dict_key_exist(d, 'k1', 'k10')
print(d)
# {'k2': 2, 'k3': 3, 'k10': 1}

d = {'k1': 1, 'k2': 2, 'k3': 3}
change_dict_key_exist(d, 'k10', 'k100')
print(d)
# {'k1': 1, 'k2': 2, 'k3': 3}

Si une clé existante est spécifiée comme troisième argument (nouvelle clé), la valeur de la clé existante est écrasée.

d = {'k1': 1, 'k2': 2, 'k3': 3}
change_dict_key_exist(d, 'k1', 'k2')
print(d)
# {'k2': 1, 'k3': 3}

Comme dans l’exemple ci-dessus, si vous souhaitez conserver la valeur d’origine lorsque vous spécifiez une clé existante en tant que nouvelle clé, utilisez la méthode setdefault().

def change_dict_key_exist_setdefault(d, old_key, new_key):
    if old_key in d:
        d.setdefault(new_key, d.pop(old_key))

d = {'k1': 1, 'k2': 2, 'k3': 3}
change_dict_key_exist_setdefault(d, 'k1', 'k2')
print(d)
# {'k2': 2, 'k3': 3}