ここでは、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 で辞書をソートする方法でした。