2009-11-02 5 views
0

Je suis juste confus au sujet de pourquoi mon code ne fonctionnerait pas, voici la question et le code que j'ai jusqu'à présent (le test dit que ma réponse est fausse). Étant donné le dictionnaire d, trouvez la plus grande clé dans le dictionnaire et associez la valeur correspondante à la variable val_of_max. Par exemple, étant donné le dictionnaire {5:3, 4:1, 12:2}, 2 serait associé à val_of_max. Supposons que d n'est pas vide.Trouver la plus haute clé

d = {5:3, 4:1, 12:2, 14:9} 
val_of_max = max(d.keys()) 
print val_of_max 
+1

Le titre de votre question ne correspond pas à votre question. La question inclut "la plus grande clé dans le dictionnaire et associe la valeur correspondante" Le titre est juste "la plus haute clé", et omet la partie "associer la valeur correspondante". Pouvez-vous éditer votre question pour que le titre corresponde à votre vraie question? –

Répondre

11

votre code imprime la clé avec la valeur maximale. Ce que vous voulez est:

d = {5:3, 4:1, 12:2, 14:9} 
val_of_max = d[max(d.keys())] 
print val_of_max 

Autrement dit, vous devez déréférencer la clé pour retourner la valeur.

+0

Hmm, donc j'ai juste mal lu la question, c'est bien. Merci beaucoup. ^^ –

+1

ce serait un peu plus efficace si vous utilisiez .iterkeys() plutôt que .keys() –

+0

@ ʞɔıu: ce serait plus efficace si vous vous débarrassiez complètement de toutes les méthodes dict. – SilentGhost

5

cela va faire:

>>> d = {5:3, 4:1, 12:2, 14:9} 
>>> d[max(d)] 
9 
>>> max(d)  # just in case you're looking for this 
14 
+0

En fait, j'essayais de trouver la valeur de la clé max pas la valeur max. –

+0

dans votre exemple, la clé maximale correspond à la valeur maximale. Je fais exactement la même chose que Nathan, d'une manière saine et efficace. – SilentGhost

+1

+1, il n'y a absolument aucun intérêt à utiliser max (d.keys()) quand max (d) fonctionne aussi bien! –

1

Même code mais rappelez-vous d'appeler la valeur de la clé:

d = {5:3, 4:1, 12:2, 14:9} 
val_of_max = max(d.keys()) 
print d[val_of_max] 
0
d= {5:3, 4:1, 12:2, 14:9} 

Pour imprimer la valeur associée à la plus grande clé:

print max(d.iteritems())[1] 

Pour imprimer la clé a ssociated avec la plus grande valeur:

import operator 
print max(d.iteritems(), key=operator.itemgetter(1))[0] 
Questions connexes