Pythonでソート
 Author: 水卜

PythonでListのソート

PythonにおけるListの配列はsort()メソッドまたはsorted()で以下のように行える。
sort()は破壊的なので元のListがソートされるが、sorted()は非破壊的なのでソートされた新しいListができる。

score = {'A': 0, 'B': 2, 'C': 3, 'D': 2, 'E': 1}
score.values()
dict_values([0, 2, 3, 2, 1])
score_values = list(score.values())
score_values
>> [0, 2, 3, 2, 1]
score_values.sort()
score_values
>> [0, 1, 2, 2, 3]
score_values.sort(reverse=True)
score_values
>> [3, 2, 2, 1, 0]

Pythonで辞書のソート

lambda 引数: 戻り値
Pythonには、上記のように書ける無名関数が用意されている。
これがpythonの辞書型をソートする時に使える。

score
>> {'A': 0, 'B': 2, 'C': 3, 'D': 2, 'E': 1}
score_items = list(score.items())
score_items
>> [('A', 0), ('B', 2), ('C', 3), ('D', 2), ('E', 1)]
score_items.sort(key=lambda x: x[1])
score_items
>> [('A', 0), ('E', 1), ('B', 2), ('D', 2), ('C', 3)]
score_items.sort(key=lambda x: x[1], reverse=True)
score_items
>> [('C', 3), ('B', 2), ('D', 2), ('E', 1), ('A', 0)]