2016-10-18 17 views
-1

人! 私はこのようになります(実際には、JSONなどのPostgreSQLから輸入)リストのリストがあります:Pythonのリストのリストを並べ替える

[{'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を使用したりソート「スコア」の値によって、それをソートするきちんとした方法はありますか?おそらく、まずスコアが最低になるので、ポップを使って最大スコアのNレコードを取得することができます。

+0

重要何を持っていることは辞書のリストではなく、リストのリストであることに注意すること。 –

答えて

1
sorted(yourlist, key=lambda x:x['score']) 
+1

これは辞書のマッピングにアクセスする方法ではありません。あなたは 'key = lambda x:x ['score']'デフォルトのソート順が小さい - > largeを意味します –

+0

@Patrick Haugh、@Muposat:これは私が探していたものです! 'scoredict = sorted(scoredict、key = lambda x:x ['score'])'それから 'print(scoredict.pop())'を何度も、ありがとう、皆さん! –

+0

答えが正しかった、ありがとう@Patrick Haugh – Muposat

2

まず、あなたが持っているものは辞書のリストです。あなたはそれをソートするoperator.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] 
関連する問題