【Python】リストと辞書をソートする

2021.09.02
2024.03.24
プログラミング
Pythonソート

はじめに

Pythonでのソートに関して、リストのソートや辞書のソートの書き方をまとめました。

sortとsoted

sortはlist型のメソッドになります。元のリストがソートされます。

sortedはソートしたリストを生成します。list型だけでなく、辞書型もソートできます。

これから紹介する例はsortsotedで紹介します。

リストのソート

まずは1次元リストのソートです。

ソートするのは下記のリストです。

1li = [3, 1, 8, 4, 9, 2, 7, 6, 5]

昇順にソートします。

1li.sort()
2
3sorted_li = sorted(li)
1[1, 2, 3, 4, 5, 6, 7, 8, 9]

降順にソートします。

1li.sort(reverse=True)
2
3sorted_li = sorted(li, reverse=True)
1[9, 8, 7, 6, 5, 4, 3, 2, 1]

多次元リストのソート

次に多次元リストのソートです。

ソートするのは下記のリストです。

1li = [[2, 7], [7, 8], [1, 3], [7, 2], [9, 1], [2, 4], [5, 8]]

そのままソートすると1つ目の要素でソートされます。

1li.sort()
2
3soted_li = sorted(li)
1[[1, 3], [2, 4], [2, 7], [5, 8], [7, 2], [7, 8], [9, 1]]

ソートする要素の優先順位を変えたい場合はitemgetterで要素を指定します。

1from operator import itemgetter
2
3li.sort(key=itemgetter(1, 0))
4soted_li = sorted(li, key=itemgetter(1, 0))
1[[9, 1], [7, 2], [1, 3], [2, 4], [2, 7], [5, 8], [7, 8]]

辞書型のソート

辞書型ではsortが使えないので、sortedのみになります。

ソートするのは下記になります。

1dic = {
2    7: 1,
3    2: 3,
4    5: 8,
5    1: 2,
6    4: 7,
7    6: 3,
8}

keys

辞書のキーのみをソートする場合は下記になります。

1sorted_keys = sorted(dic.keys())
1[1, 2, 4, 5, 6, 7]

values

辞書のバリューのみをソートする場合は下記になります。

1sorted_values = sorted(dic.values())
1[1, 2, 3, 3, 7, 8]

items

キーとバリューの組み合わせでソートする場合はitemgetterを利用します。

itemgetter(0)とするとキーでソートされます。

1from operator import itemgetter
2sorted_items = sorted(dic.items(), kes=itemgetter(0))
1[(1, 2), (2, 3), (4, 7), (5, 8), (6, 3), (7, 1)]

itemgetter(1)とするとバリューでソートされます。

1from operator import itemgetter
2sorted_items = sorted(dic.items(), key=itemgetter(1))
1[(7, 1), (1, 2), (2, 3), (6, 3), (4, 7), (5, 8)]

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee