Pythonでのソーティング方法(リスト、辞書配列・連想配列編)

2010年2月14日

Pythonでソーティングをする方法を紹介します。


Pythonでソーティングと対象となるのはリスト型、配列型と辞書配列(連想配列)型です。


タプル型と集合型はソーティングすることはできません。


リスト型、配列型の場合は、元々sort()メソッドが定義されていますので、以下のように実現することができます。

1
2
3
4
5
6
7
8
# 以下は、ipython(pythonインタープリタモードの便利版)の結果をそのまま表示しています。
In [1]: list = [10, 6, 2, 5, 8]
In [2]: list.sort()
In [3]: list
Out[3]: [2, 5, 6, 8, 10]
In [4]: list.sort(reverse=True)
In [5]: list
Out[5]: [10, 8, 6, 5, 2]

sort()メソッドを実行することで、昇順に値の並び替えが行われます。 降順にソーティングしたい場合は、sort(reverse=True)と引数情報を与えてあげればOKです。 


次に、辞書配列型(連想配列型)についてです。


連想配列では、メソッドレベルでソーティング関数が準備されているわけではありませんので、 以下のようにsorted()関数を呼び出しましょう。

1
2
3
4
5
6
7
8
9
In [6]: dict = {10:1, 4:9, 8:7, 6:2}
In [7]: sorted( dict.keys() )
Out[7]: [4, 6, 8, 10]
In [9]: sorted( dict.keys(), reverse=True )
Out[9]: [10, 8, 6, 4]
In [10]: sorted( dict.values() )
Out[10]: [1, 2, 7, 9]
In [11]: sorted( dict.values(), reverse=True )
Out[11]: [9, 7, 2, 1]

使い方はリスト型のsort()配列とほぼ同じですが、 辞書のキーor値のどちらか一方のみがリスト型として出力される点に注意するようにしてください。 

ちなみに、辞書配列のキーをリストとして返す(キーの登録順番との相関がない点に注意)メソッドは keys()で、値をリストとして返すのはvalues()メソッドとなります。