如何从字典列表中获取值最大的字典

4 投票
4 回答
1690 浏览
提问于 2025-04-16 20:44

我有一个字典的列表。有没有办法找到分数最高的那个字典,或者找到它在列表中的位置?下面是这个列表:

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

它应该返回:

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

4 个回答

3

我更喜欢用一个叫做“lambda”的东西来提取分数:

>>> lst= [{'name':'tom','score':5},{'name':'jerry','score':10},{'name':'jason','score':8}]
>>> max(lst, key=lambda d: d['score'])
{'score': 10, 'name': 'jerry'}
9

使用 max 函数时,除了可以用 lambda 来指定 key 参数外,还有一个替代方法,就是使用 operator.itemgetter

from operator import itemgetter
max(lst, key=itemgetter('score'))
8

内置的函数 max() 可以接受一个可选的 key 函数。这个 key 函数可以用一种叫做 lambda 的方式来提供:

>>> max(lst, key=lambda x:x['score'])
{'score': 10, 'name': 'jerry'}

撰写回答