2015-04-07 3 views
-1

Je souhaite échanger des clés et des valeurs dans un dictionnaire donné. Par exemple:Comment échanger des clés et des valeurs dans un dict?

dict = {1:'sandeep', 2: 'suresh', 3: 'pankaj'} 

deviendront:

dict1 = {'sandeep': 1, 'suresh': 2, 'pankaj': 3} 
+0

'{val: clé pour la clé, val dans dict.items()}'? Mais vous ne devriez pas nommer votre propre dictionnaire 'dict', et aurez-vous ** toujours ** des valeurs uniques et faciles à retenir? – jonrsharpe

Répondre

0

L'utilisation zip est probablement mieux qu'une compréhension dictionnaire:

dict1 = dict(zip(dict1.values(), dict1.keys())) # better for beginners 
+1

Assurez-vous que votre dictionnaire d'origine est 'dict1' au lieu de' dict'. –

+3

Pourquoi est-ce mieux? – MJeffryes

+0

Les débutants ne connaissent pas trop bien les compréhensions en général, mais la plupart connaissent certaines des méthodes intégrées. –

0
In [45]: d = {1:'sandeep',2 : 'suresh', 3: 'pankaj'} 

In [46]: {(v, k) for k,v in d.iteritems()} 
Out[46]: {'pankaj': 3, 'sandeep': 1, 'suresh': 2} 

Notez l'utilisation de d comme nom de variable au lieu de l'dict intégré.

Notez également que vous n'êtes pas garantie unique et peut perdre des entrées:

In [47]: d = {1:'sandeep',2 : 'suresh', 3: 'pankaj', 4:'suresh'} 

In [48]: {(v, k) for k,v in d.iteritems()} 
Out[48]: {'pankaj': 3, 'sandeep': 1, 'suresh': 4} 
+1

Pourquoi n'utilisez-vous pas une compréhension de dictionnaire directement? '{v: k pour k, v dans d.iteritems()}' – MJeffryes

+0

@MJeffryes Oui, vous avez raison, beaucoup mieux de cette façon. Edité la réponse en conséquence. –

+1

Selon le tag "** python-3.x **" 'iteritems' devrait être remplacé par' items'. – Matthias