【Python】sorted()関数を使ってリスト等の要素をソートする!sort()との違いも解説!
Pythoでリスト等の要素をソートするにはsorted()を使用します。
sorted()はリスト等(リスト、タプル、辞書、配列)の要素や文字列の文字を並び替えるメソッドであり、並び替えを行うことで昇順・降順など、簡単に並べ替えることができます。
しかし、sorted()関数以外にもsort()メソッドというものもありますので注意が必要です。
今回はsorted()関数を使ってリスト等の要素をソートする方法について以下の内容について解説していきます。
⚫︎ リスト等の要素を昇順にソートする場合
⚫︎ リスト等の要素を降順にソートする場合
⚫︎ 並び替えの基準を他の関数で行ってソートする場合
⚫︎ 二次元のリスト等の要素をソートする場合
⚫︎ 三次元リスト等の要素をソートする場合
⚫︎ sorted()とsort()の違い
目次
sorted()とは
sorted()関数は、指定された反復可能オブジェクトのソートされたリストを返します。
昇順または降順を指定でき、文字列はアルファベット、ひらがな、カタカナの順に並べ替えられ、数値は数値順に並べ替えられます。
sorted()の書き方
sorted()の構文は下記となります。
1 |
sorted(リストなど [,key] [,reverse]) |
パラメータ
パラメータの説明は下記となります。
⚫︎ リストなど
(ソート、リスト、辞書、タプルなどのシーケンス)
⚫︎ key
順序を決定するために実行する関数
(デフォルトはなし)
⚫︎ reverse
ブール値となり、falseは昇順で並べ替え、trueは降順で並べ替えられる
(デフォルトはfalse)
sorted()関数は、指定された反復可能オブジェクトのソートされたリストを返します。
昇順または降順を指定でき、文字列はアルファベット、ひらがな、カタカナの順に並べ替えられ、数値は数値順に並べ替えられます。
リスト等の要素をソートするサンプルコード
sorted()関数を使ってリスト等の要素をソートするサンプルコードを紹介します。
リスト等の要素を昇順にソートする場合
リスト等の要素を昇順にソートする場合はsorted()関数のパラメータであるreverseにFalse(Fは大文字)を指定します。
しかし、デフォルトがfalseなので引数reverseを指定しなくても昇順に並び替えることができます。
まずは、リスト(list)の要素を昇順にソートしてみます。
リストの場合
1 2 3 4 5 6 7 |
num = [13, 0.5, -40, 1000] animal= ["きつね", "タヌキ", "ウサギ", "カメ", "lion"] x = sorted(num) print(x) y = sorted(animal, reverse = False) print(y) |
出力結果
[-40, 0.5, 13, 1000]
[‘lion’, ‘きつね’, ‘ウサギ’, ‘カメ’, ‘タヌキ’]
リストの要素が昇順にソートされています。
続いて、タプル(tuple)の要素を昇順にソートしてみます。
タプルの場合
1 2 3 4 5 6 7 8 |
num = (13, 0.5, -30, 1000) name= "たなか","すずき","なかむら","あきもと" x = sorted(num, key = abs, reverse = False) print(x) z = sorted(name) print(z) |
出力結果
[0.5, 13, -30, 1000]
[‘あきもと’, ‘すずき’, ‘たなか’, ‘なかむら’]
タプルの要素が昇順にソートされています。
続いて、辞書の要素を昇順にソートしてみます。
辞書の場合
1 2 3 4 5 6 7 8 9 10 |
dict1 = { "a": "apple", "b": "ball", "c": "cat", "d": "desk" } x = sorted(dict1.keys(), reverse = False) print(x) y = sorted(dict1.values(), reverse = False) print(y) z = sorted(dict1.items(), reverse = False) print(z) |
出力結果
[‘a’, ‘b’, ‘c’, ‘d’]
[‘apple’, ‘ball’, ‘cat’, ‘desk’]
[(‘a’, ‘apple’), (‘b’, ‘ball’), (‘c’, ‘cat’), (‘d’, ‘desk’)]
辞書の要素が昇順にそれぞれソートされています。
続いて、配列の要素を昇順にソートしてみます。
配列の場合
1 2 3 4 5 6 7 8 9 10 |
import array num = array.array("h", [13, 5, -30, 1000]) name= array.array ("u", ["か","ず","む","と"]) x = sorted(num, reverse = True) print(x) y = sorted(name) print(y) |
出力結果
[1000, 13, 5, -30]
[‘か’, ‘ず’, ‘と’, ‘む’]
配列の要素が昇順にそれぞれソートされています。
続いて、文字列の文字を昇順にソートしてみます。
文字列の場合
1 2 3 4 5 |
str1 = 'HelloWorld' str1_list = sorted(str1) print(str1) print(str1_list) |
出力結果
HelloWorld
[‘H’, ‘W’, ‘d’, ‘e’, ‘l’, ‘l’, ‘l’, ‘o’, ‘o’, ‘r’]
文字列の文字の要素が昇順にそれぞれソートされています。
リスト等の要素を降順にソートする場合
リスト等の要素を降順にソートする場合はsorted()のパラメータのreverseにTrue(Tは大文字)を指定します。
リスト(list)の場合
1 2 3 4 5 6 7 |
num = [13, 0.5, -40, 1000] animal= ["きつね", "タヌキ", "ウサギ", "カメ", "lion"] x = sorted(num, reverse = True) print(x) y = sorted(animal, reverse = True) print(y) |
出力結果
[1000, 13, 0.5, -40]
[‘タヌキ’, ‘カメ’, ‘ウサギ’, ‘きつね’, ‘lion’]
リストの要素が降順にそれぞれソートされています。
続いて、タプル(tuple)の要素を降順にソートしてみます。
タプル(tuple)の場合
1 2 3 4 5 6 7 8 |
num = (13, 0.5, -30, 1000) name= "たなか","すずき","なかむら","あきもと" x = sorted(num, key = abs, reverse = True) print(x) z = sorted(name, reverse = True) print(z) |
出力結果
[1000, -30, 13, 0.5]
[‘なかむら’, ‘たなか’, ‘すずき’, ‘あきもと’]
タプルの要素が降順にソートされています。
続いて、辞書の要素を降順にソートしてみます。
辞書(dict)の場合
1 2 3 4 5 6 7 8 9 10 |
dict2 = { "a": "apple", "b": "ball", "c": "cat", "d": "desk" } x = sorted(dict2.keys(), reverse = True) print(x) y = sorted(dict2.values(), reverse = True) print(y) z = sorted(dict2.items(), reverse = True) print(z) |
出力結果
[‘a’, ‘b’, ‘c’, ‘d’]
[‘apple’, ‘ball’, ‘cat’, ‘desk’]
[(‘a’, ‘apple’), (‘b’, ‘ball’), (‘c’, ‘cat’), (‘d’, ‘desk’)]
辞書の要素が降順にそれぞれソートされています。
続いて、配列の要素を降順にソートしてみます。
配列(array)の場合
1 2 3 4 5 6 7 8 9 10 |
import array num = array.array("h", [13, 5, -30, 1000]) name= array.array ("u", ["か","ず","む","と"]) x = sorted(num, reverse = True) print(x) y = sorted(name) print(y) |
出力結果
[1000, 13, 5, -30]
[‘か’, ‘ず’, ‘と’, ‘む’]
配列の要素が降順にそれぞれソートされています。
続いて、文字列の文字を降順にソートしてみます。
文字列の場合
1 2 3 4 5 |
str1 = 'HelloWorld' str1_list = sorted(str1, reverse = True) print(str1) print(str1_list) |
出力結果
HelloWorld
[‘r’, ‘o’, ‘o’, ‘l’, ‘l’, ‘l’, ‘e’, ‘d’, ‘W’, ‘H’]
文字列の要素が昇順にそれぞれソートされています。
並び替えの基準を他の関数で行ってソートする場合
並び替えの基準を他の関数で行ってソートする場合はsorted()のパラメータであるkeyに関数名を指定します。
まずは、リストで並び替えの基準をabs関数で行ってソートしてみます。
リスト(list)の場合
1 2 3 4 |
num = [13, 0.5, -40, 1000] x = sorted(num, key = abs, reverse = True) print(x) |
出力結果
[1000, -40, 13, 0.5]
absは絶対値を表示することができるabs()であり、reverseがTrueである為、絶対値の降順に並び替えられています。
続いてタプルで並び替えの基準をlen関数で行ってソートしてみます。
タプル(tuple)の場合
1 2 3 4 |
animal= ["きつね", "タヌキ", "ウサギ", "カメ", "lion"] x = sorted(animal, key = len) print(x) |
出力結果
[‘カメ’, ‘きつね’, ‘タヌキ’, ‘ウサギ’, ‘lion’]
lenは文字列の長さを数えることができるlen()である為、文字列の長さの昇順に並び替えられています。
多次元のリスト等の要素をソートするサンプルコード
多次元のリスト等(リスト、タプル)の要素をソートしてみます。
二次元のリスト等の要素をソートする場合
二次元のリスト等の要素ソートしていきます。
まずは二次元のリスト(list)の要素をソートします。
リスト(list)の場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
num = [ [13, 0.5, -30, 1000], [23, 67, 67, 78] ] name=[ ["たなか","すずき","なかむら"],["あきもと", "やまもと"] ] x = sorted(num[0]) print(x) y = sorted(name[1], reverse = True) print(y) z = sorted(name[0], key = len) print(z) |
出力結果
[-30, 0.5, 13, 1000]
[‘やまもと’, ‘あきもと’]
[‘たなか’, ‘すずき’, ‘なかむら’]
二次元のリストの要素をソートしています。
続いて、二次元のタプルの要素をソートします。
タブル(tuple)の場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
num = ( (13, 0.5, -30, 1000), (45, 67, 89, 100) ) name= ( ("たなか","すずき","なかむら","あきもと"), ("きむら", "ほんだ", "いでぐち") ) x = sorted(num[0]) print(x) y = sorted(name[1], reverse = True) print(y) z = sorted(num[0], key = abs) print(z) |
出力結果
[-30, 0.5, 13, 1000]
[‘ほんだ’, ‘きむら’, ‘いでぐち’]
[0.5, 13, -30, 1000]
二次元のタプルの要素をソートしています。
三次元リスト等の要素をソートする場合
三次元のリスト等の要素ソートしていきます。
まずは三次元のリスト(list)の要素をソートします。
リスト(list)の場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
num = [ [[13, 0,5], [-30, 1000]], [[23, 67],[67, 78]] ] name=[ [["たなか","すずもと"],["なかむら"]], [["あきもと", "ながい"],["やまもと", "やました"]] ] x = sorted(num[0][1]) print(x) y = sorted(name[1][1], reverse = True) print(y) z = sorted(name[0][0], key = len) print(z) |
出力結果
[-30, 1000]
[‘やまもと’, ‘やました’]
[‘たなか’, ‘すずもと’]
三次元のリストの要素をソートしています。
続いて、三次元のタプルの要素をソートします。
タブル(tuple)の場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
num = ( ((13, 0, 5),( -1500, 1000)), ((45, 67), (89, 100)) ) name= ( (("たなか","すずき"),("なかむら","あきもと")), (("きむら", "ほんだ"), ("いでぐち", "やました")) ) x = sorted(num[0]) print(x) y = sorted(name[0][1]) print(y) z = sorted(num[0][1], key = abs , reverse = True) print(z) |
出力結果
[-30, 0.5, 13, 1000]
[‘ほんだ’, ‘きむら’, ‘いでぐち’]
[0.5, 13, -30, 1000]
三次元のタプルの要素をソートしています。
sorted()とsort()の違い
並び替える関数としてsort()関数というものもあります。
この2つ違いとしては「新しいリストを作るか作らないか」です。
sort()は元のリストからソート行いますが、今回解説したsorted()はソートを行った新たなリストを生成します。
言葉ではよくわからないかと思いますのでコードを書いて解説します。
sort()を使って要素を並び替えると、下記のようになります。
sort()の例1
1 2 3 4 5 |
list1 = [-1, 1, 6, 78, 10, 35] list1.sort() print(list1) |
出力結果
[-1, 1, 6, 10, 35, 78]
list1をソートしてlist1を出力しています。
続いて、sorted()を使って要素を並び替えると、下記のようになります。
sorted()の例
1 2 3 4 5 6 |
list1 = [-1, 1, 6, 78, 10, 35] list2 = sorted(list1) print(list1) print(list2) |
出力結果
[-1, 1, 6, 78, 10, 35]
[-1, 1, 6, 10, 35, 78]
list1をソートしたバージョンをlist2という変数に格納しています。
つまり、list1自体はそのままだということです。
sort()でsorted()のように作成してみると、ソートした新しいリストを生成しない為、Noneが返ってきます。
sort()の例2
1 2 3 4 5 6 |
list1 = [-1, 1, 6, 78, 10, 35] list2 = list1.sort() print(list1) print(list2) |
出力結果
[-1, 1, 6, 10, 35, 78]
None
今回のポイント
sorted()でリスト等の要素をソートする
⚫︎ Pythonでリスト等の要素をソートするにはsorted()を使用する
⚫︎ リスト等の要素を昇順にソートする場合はsorted()をそのまま使用するかパラメータのreverseをFalseに指定する
(デフォルトはreverseがfalseである)
⚫︎ リスト等の要素を降順にソートする場合はsorted()のパラメータのreverseをTrueに指定する
⚫︎ 並び替えの基準を他の関数で行ってソートする場合はsorted()のパラメータであるkeyに関数名を指定する
⚫︎ sorted()とsort()の違いは新しいリストを作るか作らないかである
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。