2009-11-02 2 views
0

Я просто смущен тем, почему мой код не работает, вот вопрос и код, который у меня есть до сих пор (тестовый прогон говорит, что мой ответ неверен).Поиск наивысшего ключа

С учетом словаря d найдите самый большой ключ в словаре и сопоставьте соответствующее значение с переменной val_of_max. Например, с учетом словаря {5:3, 4:1, 12:2}, 2 будет ассоциирован с val_of_max. Предположим, d не пуст.

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

Ваше название вопроса не соответствует вашему вопросу. Вопрос включает «самый большой ключ в словаре и ассоциировать соответствующее значение». Заголовок - это только «старший ключ» и опускает часть «связать соответствующее значение». Можете ли вы изменить свой вопрос, чтобы название соответствовало вашему реальному вопросу? –

ответ

11

код печатает ключ с максимальным значением. Вы хотите:

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

То есть вы должны разыменовать ключ, чтобы вернуть значение.

+0

Хм, так что я просто неправильно понял вопрос, это хорошо. Спасибо. ^^ –

+1

это будет немного более эффективно, если вы использовали .iterkeys(), а не .keys() –

+0

@ ʞɔıu: было бы более эффективно, если бы вы вообще избавились от каких-либо диктовых методов. – SilentGhost

5

это будет делать:

>>> 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

На самом деле я пытался найти максимальное значение ключа, а не максимальное значение. –

+0

в вашем примере максимальная клавиша соответствует максимальному значению. Я делаю то же самое, что и Натан, просто разумным и эффективным способом. – SilentGhost

+1

+1, абсолютно не нужно использовать max (d.keys()), когда max (d) работает так же хорошо! –

1

тот же код, но помните, чтобы вызвать значение ключа:

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} 

Чтобы напечатать значение, связанное с самым большим ключом:

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

Чтобы распечатать ключ a с наибольшим значением:

import operator 
print max(d.iteritems(), key=operator.itemgetter(1))[0] 
Смежные вопросы