Pythonでfloat要素を基準にタプルをソートする方法
この記事では、float型の数値を含むタプルのリストを、その数値を基準にソートする方法を解説します。Pythonの組み込み関数 sorted() を使った方法を中心に、key 引数や reverse 引数の使い方もあわせて紹介します。
実行例
たとえば、名前と数値(文字列形式)のペアからなるタプルのリストを、数値が大きい順に並べ替えるケースを考えてみましょう。
入力:
tuple = [('AAA', '10.265'), ('BBB', '24.107'), ('CCC', '26.541'), ('DDD', '14.256'), ('EEE', '11.365')]
出力:
[('CCC', '26.541'), ('BBB', '24.107'), ('DDD', '14.256'), ('EEE', '11.365'), ('AAA', '10.265')]sorted() 関数の基本
sorted() は、指定したイテラブルを新しいリストとして返す組み込み関数です。主な引数は次のとおりです。
- 第1引数(iterable): リスト・タプル・文字列などのシーケンス、辞書・セット・frozenset などのコレクション、または任意のイテレータを指定できます。
- key(省略可能): ソート比較の基準となる関数を指定します。ここでは各タプルの2番目の要素を float に変換して比較に使います。
- reverse(省略可能): True を指定すると降順でソートされます。デフォルトは False(昇順)です。
サンプルコード
以下のコードでは、lambda 式を使って各タプルの2番目の要素(数値)を float() で変換し、それをキーとして降順にソートしています。
# float要素を基準にタプルをソートするPythonコード
def tuplesort(A):
return sorted(A, key=lambda x: float(x[1]), reverse=True)
# ドライバーコード
A = [('Adwaita', '19.215'), ('Aadrika', '10.117'), ('Babai', '14.589'), ('Mona', '14.216'), ('Sanj', '8.365')]
print("float値によるタプルのソート ::", tuplesort(A))出力結果
float値によるタプルのソート :: [('Adwaita', '19.215'), ('Babai', '14.589'), ('Mona', '14.216'), ('Aadrika', '10.117'), ('Sanj', '8.365')]ポイント解説
なぜ float() 変換が必要か
元のデータは数値が文字列として格納されているため、そのまま比較すると「'9.0' > '10.0'」のような文字列比較になってしまいます。key=lambda x: float(x[1]) とすることで、正しい数値順にソートできます。
reverse=True の効果
reverse=True を指定すると、大きい値から小さい値へ(降順)に並びます。昇順にしたい場合は reverse=False(デフォルト)のままにしてください。
sort() メソッドとの違い
sorted() は元のリストを変更せず新しいリストを返すのに対し、リストのメソッドである list.sort() は元のリスト自体を書き換えるインプレースなソートです。元のデータを保持したい場合は sorted() を使うのが安全です。
-
Pythonでバブルソートを実装する方法をわかりやすく解説
この記事では、代表的なソートアルゴリズムの一つである「バブルソート(Bubble Sort)」をPythonで実装する方法について詳しく解説します。 下図は、このアルゴリズムがどのように動作するかを示したものです。 アルゴリズムの手順 先頭の要素(インデックス = 0)から開始し、現在の要素と配列内の次の要素を比較します。 現在の要素が次の要素より大きい場合、両者を入れ替えます。 現在の要素が次の要素より小さい場合は、そのまま次の要素へ移動します。 この手順を、配列全体がソートされるまで繰り返します。 それでは、実際の実装を見てみましょう。 サンプルコード def bubbleSort(
-
Pythonで選択ソートを実装する方法|仕組みとサンプルコードをわかりやすく解説
この記事では、選択ソート(Selection Sort)の基本的な仕組みと、Python 3.x(およびそれ以前のバージョン)での実装方法について解説します。 選択ソートとは 選択ソートは、ソートされていない部分から最小の要素を繰り返し見つけ出し、先頭側へ移動させることで配列全体を整列していくアルゴリズムです。処理の過程で、対象の配列は次の2つの部分配列に分けられます。 すでにソートが完了している部分配列 まだソートされていない部分配列 選択ソートの各イテレーションでは、未ソートの部分配列から最小要素を取り出し、ソート済みの部分配列の末尾に追加していきます。 アルゴリズムの動作イメー