ここでは、python3で使用する辞書をソートする方法を、初学者向けに、説明します。

0. 辞書の構成

 辞書は key value で構成されており、以下に3つの要素をもつ辞書 ( d ) を例示します。

d = {'c':100, 'b':50, 'a':10}

上の例では、’c’, ‘b’, および ‘a’ が key であり、それぞれに対応する value が 100, 50, および10 となっています。

このような辞書をソートする際、

key でソートしたい場合と、

value でソートしたい場合の2通りがありますので、それぞれ紹介していきます。

1. 辞書を key の値で昇順にソートする

辞書を key の値で昇順にソートするには以下のようにします。

d = {'c':100, 'b':50, 'a':10}

d2 = sorted(d.items())
print(d2)
#--> [('a', 10), ('b', 50), ('c', 100)]

上記の例では、key によりソートされた辞書を d2 として受け取っています。

ここで注意が必要なのが、その d2 は出力を見るとわかるように、辞書ではありません。

括弧でくくられた要素(タプルと呼ぶ)を持つリストになっていますので、その点に注意が必要です。

2. 辞書を key の値で降順にソートする

つづいて、辞書を key の値で降順にソートします。

d の key は変えています。

d = {'a':100, 'b':50, 'c':10}

d3 = sorted(d.items(), reverse = True)
print(d3)
#--> [('c', 10), ('b', 50), ('a', 100)]

昇順にソートした場合との違いは、reverse = True が追記された部分ですね。

3. 辞書を value の値で昇順にソートする

次は、辞書を value の値で昇順にソートしてみます。

d = {'c':100, 'b':50, 'a':10}

d4 = sorted(d.items(), key=lambda x:x[1])
print(d4)
#--> [('a', 10), ('b', 50), ('c', 100)]

key の値で昇順にソートする場合との違いは、key=lambda x:x[1] が追加された部分です。これはラムダ式と呼ばれるものです。とりあえず、おまじないと思って書いても良いかと思います。。

4. 辞書を value の値で降順にソートする

最後に、辞書を value の値で降順にソートしてみます。

d = {'c':10, 'b':50, 'a':100}

d5 = sorted(d.items(), key=lambda x:x[1], reverse = True)
print(d5)
#--> [('a', 100), ('b', 50), ('c', 10)]

value の値で昇順にソートする場合との違いは、やはり reverse = True が追記された部分ですね。


以上が python3 で辞書をソートする方法でした。