はじめに
Pythonでのソートに関して、リストのソートや辞書のソートの書き方をまとめました。
sortとsoted
sort
はlist型のメソッドになります。元のリストがソートされます。
sorted
はソートしたリストを生成します。list型だけでなく、辞書型もソートできます。
これから紹介する例はsort
とsoted
で紹介します。
リストのソート
まずは1次元リストのソートです。
ソートするのは下記のリストです。
li = [3, 1, 8, 4, 9, 2, 7, 6, 5]
昇順にソートします。
li.sort()
sorted_li = sorted(li)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
降順にソートします。
li.sort(reverse=True)
sorted_li = sorted(li, reverse=True)
[9, 8, 7, 6, 5, 4, 3, 2, 1]
多次元リストのソート
次に多次元リストのソートです。
ソートするのは下記のリストです。
li = [[2, 7], [7, 8], [1, 3], [7, 2], [9, 1], [2, 4], [5, 8]]
そのままソートすると1つ目の要素でソートされます。
li.sort()
soted_li = sorted(li)
[[1, 3], [2, 4], [2, 7], [5, 8], [7, 2], [7, 8], [9, 1]]
ソートする要素の優先順位を変えたい場合はitemgetter
で要素を指定します。
from operator import itemgetter
li.sort(key=itemgetter(1, 0))
soted_li = sorted(li, key=itemgetter(1, 0))
[[9, 1], [7, 2], [1, 3], [2, 4], [2, 7], [5, 8], [7, 8]]
辞書型のソート
辞書型ではsort
が使えないので、sorted
のみになります。
ソートするのは下記になります。
dic = {
7: 1,
2: 3,
5: 8,
1: 2,
4: 7,
6: 3,
}
keys
辞書のキーのみをソートする場合は下記になります。
sorted_keys = sorted(dic.keys())
[1, 2, 4, 5, 6, 7]
values
辞書のバリューのみをソートする場合は下記になります。
sorted_values = sorted(dic.values())
[1, 2, 3, 3, 7, 8]
items
キーとバリューの組み合わせでソートする場合はitemgetter
を利用します。
itemgetter(0)
とするとキーでソートされます。
from operator import itemgetter
sorted_items = sorted(dic.items(), kes=itemgetter(0))
[(1, 2), (2, 3), (4, 7), (5, 8), (6, 3), (7, 1)]
itemgetter(1)
とするとバリューでソートされます。
from operator import itemgetter
sorted_items = sorted(dic.items(), key=itemgetter(1))
[(7, 1), (1, 2), (2, 3), (6, 3), (4, 7), (5, 8)]