PROGRAM PYTHON

初心者のためのPython超入門【第18回 ソート処理】

 

 

リストの要素をソートする

リストの要素をソートするには、sort()メソッドとsorted()関数を使います。

 

sort()メソッドの使い方

sort()メソッドは、リストの中を直接並べ替えます。
オプションをつけなければ昇順ソート、reverse=Trueオプションを使うと降順ソートができます。

昇順ソート
リスト.sort()

降順ソート
リスト.sort(reverse=True)

 実行例
>>> list = [5,1,10,6,2,9,7,3,8,4]
>>> list.sort()
>>> list
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list = [5,1,10,6,2,9,7,3,8,4]
>>> list.sort(reverse=True)
>>> list
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

 

sorted()関数の使い方

sorted()関数は、引数にリストを渡して、新しいリストに並べ替えた要素を返します。
sort()メソッドと同じように、オプションをつけなければ昇順ソート、reverse=Trueオプションを使うと降順ソートができます。

昇順ソート
新しいリスト名 = sorted(リスト名)

降順ソート
新しいリスト名 = sorted(リスト名, reverse=True)

 実行例
>>> list = [5,1,10,6,2,9,7,3,8,4]
>>> list2 = sorted(list)
>>> list2
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list
[5, 1, 10, 6, 2, 9, 7, 3, 8, 4]
>>> list2 = sorted(list, reverse=True)
>>> list2
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

 

辞書の要素をソートする

辞書は直接順番を指定できないため、items()メソッドを使って一旦タプルにする必要があります。
辞書の要素のソートには、キー(key)のソートと値(value)のソートができます。
また、引数は任意に名前をつけることができます。

昇順ソート
タプル名 = sorted(辞書名.items(), key=lambda 引数: 処理)

降順ソート
タプル名 = sorted(辞書名.items(), key=lambda 引数: 処理, reverse=True)

メモ

key=lambdaは、lambda(ラムダ)式という名前のない関数で、引数にはタプルの値が入ります。
処理には、ソートの条件を引数で渡されたタプルのキー(引数名[0])でするか、値(引数名[1])でするかを指定します。

以下の例では、arg[0]はタプルのキーをソートの対象とし、arg[1]はタプルの値をソートの対象としています。

 実行例
>>> dic = {"Takagi":3, "Nagasaki":7, "Tashiro":26, "Yamashita":1}
>>> name = sorted(dic.items(), key=lambda arg: arg[0])
>>> name
[('Nagasaki', 7), ('Takagi', 3), ('Tashiro', 26), ('Yamashita', 1)]
>>> name = sorted(dic.items(), key=lambda arg: arg[1])
>>> name
[('Yamashita', 1), ('Takagi', 3), ('Nagasaki', 7), ('Tashiro', 26)]
>>> name = sorted(dic.items(), key=lambda arg: arg[0], reverse=True)
>>> name
[('Yamashita', 1), ('Tashiro', 26), ('Takagi', 3), ('Nagasaki', 7)]
>>> name = sorted(dic.items(), key=lambda arg: arg[1], reverse=True)
>>> name
[('Tashiro', 26), ('Nagasaki', 7), ('Takagi', 3), ('Yamashita', 1)]

 

 

-PROGRAM, PYTHON