как получить индекс словаря с наибольшим значением в списке словаря - PullRequest
4 голосов
/ 03 июля 2011

у меня есть список словарей, возможно ли получить словарь или его индекс, который имеет наибольшее значение ключа оценки? вот список.

 lst= [{'name':'tom','score':5},{'name':'jerry','score':10},{'name':'jason','score':8}]

если должен вернуть

{'name':'jerry','score':10}

спасибо.

Ответы [ 4 ]

9 голосов
/ 03 июля 2011

Альтернативой использованию lambda для аргумента key для max является operator.itemgetter:

from operator import itemgetter
max(lst, key=itemgetter('score'))
8 голосов
/ 03 июля 2011

Встроенная функция max() принимает дополнительную функцию key, которая может быть предоставлена ​​в виде lambda:

>>> max(lst, key=lambda x:x['score'])
{'score': 10, 'name': 'jerry'}
3 голосов
/ 03 июля 2011

Мой предпочтительный способ - использовать лямбду для извлечения партитуры:

>>> lst= [{'name':'tom','score':5},{'name':'jerry','score':10},{'name':'jason','score':8}]
>>> max(lst, key=lambda d: d['score'])
{'score': 10, 'name': 'jerry'}
2 голосов
/ 03 июля 2011
lst= [{'name':'tom','score':5},{'name':'jerry','score':10},{'name':'jason','score':8}]

print max(lst, key=lambda x: x['score'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...