List Python中的列表排序列表

List Python中的列表排序列表,list,python-3.x,List,Python 3.x,伙计们! 我有一个列表(实际上,从PostgreSQL导入为JSON),如下所示: [{'person_name': 'FRAUDSTER_3', 'score': 10.33}, {'person_name': 'FRAUDSTER_5', 'score': 10.11}, {'person_name': 'FRAUDSTER_2', 'score': 10.44}, {'person_name': 'FRAUDSTER_4', 'score': 10.22}, {'person_name':

伙计们! 我有一个列表(实际上,从PostgreSQL导入为JSON),如下所示:

[{'person_name': 'FRAUDSTER_3', 'score': 10.33}, {'person_name': 'FRAUDSTER_5', 'score': 10.11}, {'person_name': 'FRAUDSTER_2', 'score': 10.44}, {'person_name': 'FRAUDSTER_4', 'score': 10.22}, {'person_name': 'FRAUDSTER_1', 'score': 10.55}]

是否有一种简洁的方法可以使用list.sort或sorted按“score”值对其进行排序?可能,最低分数优先,这样我就可以使用pop先获得N个最高分数的记录。

首先,您拥有的是一个字典列表。然后可以使用
操作符.itemgetter
对其进行排序:

In [362]: L = [{'person_name': 'FRAUDSTER_3', 'score': 10.33}, {'person_name': 'FRAUDSTER_5', 'score': 10.11}, {'person_name': 'FRAUDSTER_2', 'score': 10.44}, {'person_name': 'FRAUDSTER_4', 'score': 10.22}, {'person_name': 'FRAUDSTER_1', 'score': 10.55}]

In [363]: L.sort(key=operator.itemgetter('score'))

In [364]: [i['score'] for i in L]
Out[364]: [10.11, 10.22, 10.33, 10.44, 10.55]

需要注意的是,您拥有的是一个字典列表,而不是列表列表。这不是访问字典中映射的方式。您的意思是
key=lambda x:x['score']
默认排序顺序很小->large@Patrick哈,@Muposat:这就是我要找的
scoredict=sorted(scoredict,key=lambda x:x['score'])
然后
打印(scoredict.pop())
我需要多少次。谢谢大家!回答正确,谢谢@Patrick Haugh
sorted(yourlist, key=lambda x:x['score'])