如何在一个dicts列表中获得具有公共密钥最大值的整个dict

时间:2015-04-02 05:16:14

标签: python list dictionary

我有一个如下所示的词组列表:

lod = [
{'name': 'Tom', 'score': 60},
{'name': 'Tim', 'score': 70},
{'name': 'Tam', 'score': 80},
{'name': 'Tem', 'score': 90}
]

我想得到{'name': 'Tem', 'score':90},但我只能在下面做:

max(x['score'] for x in lod)

这只返回值90

我如何获得整个字典?

3 个答案:

答案 0 :(得分:4)

您可以使用max的{​​{3}}:

>>> lod = [
... {'name': 'Tom', 'score': 60},
... {'name': 'Tim', 'score': 70},
... {'name': 'Tam', 'score': 80},
... {'name': 'Tem', 'score': 90}
... ]
... 
>>> max(lod, key=lambda x: x['score'])
{'name': 'Tem', 'score': 90}

答案 1 :(得分:4)

只需将您的列表传递给max,就像这样:

>>> from operator import itemgetter
>>> lod = [
... {'name': 'Tom', 'score': 60},
... {'name': 'Tim', 'score': 70},
... {'name': 'Tam', 'score': 80},
... {'name': 'Tem', 'score': 90}
... ]
>>> max(lod, key=itemgetter('score'))
{'score': 90, 'name': 'Tem'}

答案 2 :(得分:0)

我不知道sorting是否耗时,

>>>sorted(lod, key=lambda x:x['score'])[-1]
{'name': 'Tem', 'score': 90}