Python で 2D 配列を並べ替える

Muhammad Maisam Abbas 2023年1月30日
  1. Python の sort() 関数を使用して 2D 配列を列番号で並べ替える
  2. Python で sorted() 関数を使用して 2D 配列を列番号で並べ替える
Python で 2D 配列を並べ替える

Python で多次元配列を並べ替えるさまざまな方法を紹介します。

配列の並べ替えには、sort()sorted() などの組み込み関数があります。これらの関数を使用すると、必要に応じて並べ替える列を定義するために使用できる特定のキーを取得することもできます。

sort() メソッドはリストをインプレースで変更し、sorted() 組み込み関数は反復可能ファイルから新しいソート済みリストを作成します。また、sort() および sorted() 関数の反復可能を定義するためのさまざまなメソッドについても説明します。

Python の sort() 関数を使用して 2D 配列を列番号で並べ替える

配列を列番号で並べ替えるには、関数 sort() で次のような key を定義する必要があります。

lst = [["John", 5], ["Jim", 9], ["Jason", 0]]

lst.sort(key=lambda x: x[1])
print(lst)

出力:

[['Jason', 0], ['John', 5], ['Jim', 9]]

並べ替えの理由から、key パラメーターは、単一の引数を受け入れ、並べ替えプロセスで使用できる key を返す関数の値に設定する必要があります。キー関数は入力レコードごとに 1 回だけ呼び出されるため、この戦略をすばやく実行できます。

頻繁に使用されるパターンは、オブジェクトの 1つ以上のインデックスをキーとして使用して複雑なオブジェクトを並べ替えることです。

lst = [
    ("john", "C", 15),
    ("jane", "A", 12),
    ("dave", "D", 10),
]

lst.sort(key=lambda lst: lst[2])
print(lst)

出力:

[('dave', 'D', 10), ('jane', 'A', 12), ('john', 'C', 15)]

上記の key=lambda lst:lst[2] のコードでは、lst[2] がソートベースに使用する列を定義しています。この場合、lst は 3 番目の列で並べ替えられます。

Python で sorted() 関数を使用して 2D 配列を列番号で並べ替える

列番号で配列を並べ替えるには、次のような関数 sorted()key を定義する必要があります。

li = [["John", 5], ["Jim", 9], ["Jason", 0]]

sorted_li = sorted(li, key=lambda x: x[1])
print(sorted_li)

出力:

[['Jason', 0], ['John', 5], ['Jim', 9]]

sorted() 関数は前のコードの新しいリストを返しますが、sort() 関数は元のリストを置き換えることに注意してください。

キーは、ライブラリ operatoritemgetter を使用して代わりに定義することもできます。

from operator import itemgetter

lst = [
    ("john", "C", 15),
    ("jane", "A", 12),
    ("dave", "D", 10),
]

sorted_lst = sorted(lst, key=itemgetter(1))
print(sorted_lst)

出力:

[('jane', 'A', 12), ('john', 'C', 15), ('dave', 'D', 10)]
Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

関連記事 - Python Array