MENU

【Python】2次元リストをソート(昇順・降順)する方法を解説

Pythonプログラミングを学ぶ上で、リストの操作は非常に重要なスキルです。

特に、2次元リストのソートはデータ処理や解析において頻繁に使用されるため、しっかりと理解しておくことが大切です。

この記事では、プログラミング初心者にもわかりやすく、2次元リストのソート方法を昇順・降順それぞれについて詳しく解説します。

目次から探す

2次元リストの昇順ソート

2次元リストとは、リストの中にリストが入っているデータ構造のことです。

この章では、2次元リストを昇順にソートする方法を解説します。

sorted関数を使った方法

sorted関数はソートしたリストを戻り値として返す関数です。元のリストは変更されません。

Pythonの組み込み関数であるsortedを使って、2次元リストを昇順にソートする方法を紹介します。

ソートキーを指定する方法

sorted関数を使って2次元リストを昇順にソートするには、key引数にソートの基準となる列を指定します。

以下に例を示します。

data = [[3, "りんご"], [1, "みかん"], [2, "ぶどう"]]

# 0列目を基準に昇順ソート
sorted_data = sorted(data, key=lambda x: x[0])
print(sorted_data)  # [[1, 'みかん'], [2, 'ぶどう'], [3, 'りんご']]

この例では、key引数にlambda関数を使って0列目を基準に昇順ソートしています。

1列目(果物の名前)でソートしたい場合はkey=lambda x: x[1]となります。

複数の列を基準に昇順ソートする方法

複数の列を基準に昇順ソートする場合は、key引数にタプルを返すlambda関数を指定します。

以下に例を示します。

data = [[3, "りんご"], [1, "みかん"], [2, "ぶどう"], [1, "いちご"]]

# 0列目、1列目を基準に昇順ソート
sorted_data = sorted(data, key=lambda x: (x[0], x[1]))
print(sorted_data)  # [[1, 'いちご'], [1, 'みかん'], [2, 'ぶどう'], [3, 'りんご']]

この例では、key引数にlambda関数を使って0列目と1列目を基準に昇順ソートしています。

これは、まず0列目の数値でソートを行い、同じ数値があった場合は2列目(果物の名前)でソートされる仕組みです。

これにより複雑な条件でのソートが可能になります。

sortメソッドを使った方法

sort関数は自身のリストをソートする関数です。元のリストが変更されません。それ以外は先ほど紹介したsorted関数と使い方が同じです

リストのsortメソッドを使って、2次元リストを昇順にソートする方法を紹介します。

ソートキーを指定する方法

sortメソッドを使って2次元リストを昇順にソートするには、key引数にソートの基準となる列を指定します。

以下に例を示します。

data = [[3, "りんご"], [1, "みかん"], [2, "ぶどう"]]

# 0列目を基準に昇順ソート
data.sort(key=lambda x: x[0])
print(data)  # [[1, 'みかん'], [2, 'ぶどう'], [3, 'りんご']]

この例では、key引数にlambda関数を使って0列目を基準に昇順ソートしています。

複数の列を基準に昇順ソートする方法

複数の列を基準に昇順ソートする場合は、key引数にタプルを返すlambda関数を指定します。

以下に例を示します。

data = [[3, "りんご"], [1, "みかん"], [2, "ぶどう"], [1, "いちご"]]

# 0列目、1列目を基準に昇順ソート
data.sort(key=lambda x: (x[0], x[1]))
print(data)  # [[1, 'いちご'], [1, 'みかん'], [2, 'ぶどう'], [3, 'りんご']]

この例では、key引数にlambda関数を使って0列目と1列目を基準に昇順ソートしています。

2次元リストの降順ソート

2次元リストを降順にソートする方法について解説します。

ここでは、sorted関数とsortメソッドを使った方法をそれぞれ紹介します。

sorted関数を使った方法

sorted関数は、リストをソートした新しいリストを返す関数です。

この関数を使って2次元リストを降順にソートする方法を見ていきましょう。

ソートキーを指定する方法

sorted関数にkey引数を指定することで、ソートの基準となるキーを設定できます。

以下の例では、2次元リストの各要素の1つ目の値を基準に降順ソートしています。

data = [[1, 2], [3, 1], [2, 3]]
sorted_data = sorted(data, key=lambda x: x[0], reverse=True)
print(sorted_data)  # [[3, 1], [2, 3], [1, 2]]

key引数には、ソートの基準となる値を返す関数を指定します。

ここでは、lambdaを使って無名関数を作成しています。

reverse引数にTrueを指定することで、降順ソートが行われます。

複数の列を基準に降順ソートする方法

複数の列を基準に降順ソートする場合は、key引数に指定する関数で複数の値をタプルとして返すようにします。

以下の例では、1つ目の値を基準に降順ソートし、同じ値の場合は2つ目の値で降順ソートしています。

data = [[1, 2], [3, 1], [2, 3], [2, 1]]
sorted_data = sorted(data, key=lambda x: (x[0], x[1]), reverse=True)
print(sorted_data)  # [[3, 1], [2, 3], [2, 1], [1, 2]]

sortメソッドを使った方法

sortメソッドは、リスト自体をソートするメソッドです。

sorted関数と同様に、key引数とreverse引数を使って降順ソートを行うことができます。

ソートキーを指定する方法

以下の例では、2次元リストの各要素の1つ目の値を基準に降順ソートしています。

data = [[1, 2], [3, 1], [2, 3]]
data.sort(key=lambda x: x[0], reverse=True)
print(data)  # [[3, 1], [2, 3], [1, 2]]

複数の列を基準に降順ソートする方法

複数の列を基準に降順ソートする場合も、key引数に指定する関数で複数の値をタプルとして返すようにします。

以下の例では、1つ目の値を基準に降順ソートし、同じ値の場合は2つ目の値で降順ソートしています。

data = [[1, 2], [3, 1], [2, 3], [2, 1]]
data.sort(key=lambda x: (x[0], x[1]), reverse=True)
print(data)  # [[3, 1], [2, 3], [2, 1], [1, 2]]

以上が、2次元リストを降順ソートする方法です。

sorted関数とsortメソッドの違いや、key引数の使い方を理解することで、柔軟なソート処理が行えるようになります。

1 2
目次から探す