Exemple de commet intervertir les clés et les valeurs d'un dictionnaire en python:
Echanger les clés et les valeurs d'un dictionnaire
Considérons le dictionnaire suivant :
d = {'A':1, 'B':2, 'C':3}
Pour itérer sur toutes les clés et valeurs nous pouvons utiliser items():
for x, y in d.items():
print(x,y)
donne
A 1
B 2
C 3
Ensuite, pour créer un nouveau dictionnaire avec des clés et des valeurs inversées, une solution simple consiste à faire :
new_d = {y: x for x, y in d.items()}
donne
{1: 'A', 2: 'B', 3: 'C'}
Dictionnaires imbriqués
Autre exemple : le but est d'échanger des clés et des valeurs de dictionnaires à l'intérieur d'un autre dictionnaire :
d = { 'table 1':{'A':1, 'B':2, 'C':3}, 'table 2':{'D':4, 'E':5, 'F':6} }
Pour itérer sur toutes les clés et valeurs
for x, y in d.items():
print(x,y)
for xn, yn in y.items():
print(xn,yn)
donne
table 1 {'A': 1, 'B': 2, 'C': 3}
A 1
B 2
C 3
table 2 {'D': 4, 'E': 5, 'F': 6}
D 4
E 5
F 6
alors
new_d = { x: { yn:xn for xn, yn in y.items() } for x, y in d.items() }
donne
{'table 1': {1: 'A', 2: 'B', 3: 'C'}, 'table 2': {4: 'D', 5: 'E', 6: 'F'}}
Exemple d'utilisation avec une pandas dataframe
import pandas as pd
df = pd.DataFrame(data=['A','B','C'])
print(df)
donne
0
0 A
1 B
2 C
d = {'A':100,'B':200,'C':300}
df.replace(d,inplace=True)
print(df)
donne
0
0 100
1 200
2 300
new_d = {y: x for x, y in d.items()}
df.replace(new_d,inplace=True)
print(df)
donne
0
0 A
1 B
2 C