Pythonでソート
 Author: ion

python

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)]