Pythonのsort()メソッド完全ガイド|昇順・降順・keyパラメータの使い方
このチュートリアルでは、Pythonリストのsort()メソッドについて詳しく解説します。sort()メソッドは、リストを昇順または降順に並べ替えるために使用されるメソッドです。オプション引数の有無によって、さまざまな使い方ができます。
sort()メソッドはインプレース(破壊的)メソッドであり、呼び出すと元のリストが直接変更される点に注意しましょう。元のリストを残したい場合は、組み込み関数のsorted()を使用してください。
それでは、順番に見ていきましょう。
デフォルトのsort():昇順にソートする
オプション引数を何も指定せずにsort()メソッドを呼び出すと、リストは昇順にソートされます。まずは基本的な例から確認してみましょう。
コード例
# リストの初期化 numbers = [4, 3, 5, 1, 2] # 昇順にソート numbers.sort() # 結果を出力 print(numbers)
実行結果
上記のコードを実行すると、次のような出力が得られます。
[1, 2, 3, 4, 5]
reverseパラメータで降順にソートする
reverseオプション引数を使うと、リストを降順に並べ替えることができます。reverseにTrueを渡すだけで、降順ソートが実現できます。
コード例
# リストの初期化 numbers = [4, 3, 5, 1, 2] # 降順にソート numbers.sort(reverse=True) # 結果を出力 print(numbers)
実行結果
上記のコードを実行すると、次のような出力が得られます。
[5, 4, 3, 2, 1]
keyパラメータでソート基準を指定する
sort()メソッドは、keyというもう一つの重要なオプション引数を受け取ります。keyは、「リスト内のどの値を基準にソートするか」を指定するために使用します。
たとえば、辞書のリストがあり、その中の特定の値に基づいて並べ替えたい場合を考えてみましょう。このようなケースでは、key引数に「ソートの基準となる値を返す関数」(lambda関数など)を渡します。
コード例
# 辞書のリストを初期化
numbers = [{'a': 5}, {'b': 1, 'a': 1}, {'c': 3, 'a': 3}, {'d': 4, 'a': 4}, {'e': 2, 'a': 2}]
# キー'a'の値を基準にソート
numbers.sort(key=lambda dictionary: dictionary['a'])
# 結果を出力
print(numbers)
実行結果
上記のコードを実行すると、キー'a'の値(1〜5)を基準に、次のように並べ替えられます。
[{'b': 1, 'a': 1}, {'e': 2, 'a': 2}, {'c': 3, 'a': 3}, {'d': 4, 'a': 4}, {'a': 5}]
まとめ
この記事では、Pythonのsort()メソッドについて、デフォルトの昇順ソートから、reverseパラメータによる降順ソート、keyパラメータを使った柔軟なソート基準の指定方法までを解説しました。これらを組み合わせることで、数値や文字列はもちろん、辞書など複雑なデータ構造も思い通りの順序で並べ替えられます。
チュートリアルの内容について不明な点や疑問がある場合は、ぜひコメント欄でお知らせください。
-
Pythonで日付文字列のリストを並べ替える方法
Pythonで日付形式の文字列が格納されたリストを正しく並べ替えるには、sort関数を使うだけでは不十分です。日付文字列は辞書順に比較されるため、そのままソートすると意図した順序になりません。そこで、各日付文字列をdatetimeオブジェクトに変換し、その値を基準にソートする必要があります。具体的には、sort関数のkey引数を利用します。key引数にはラムダ式(無名関数)を渡し、その中でdatetime.strptime()を使って各日付文字列をdatetimeオブジェクトに変換します。こうすることで、Pythonはこのdatetimeオブジェクト同士を比較してリストを時系列順に並べ替えてく
-
Pythonで文字列のリストを並べ替える方法:sort()とsorted()の使い分け
Pythonでは、文字列のリストを並べ替える方法が2つ用意されています。リスト自体を直接変更するsort()メソッドと、元のリストを保持したまま新しい並べ替え済みリストを作成するsorted()関数です。それぞれの特徴と使い方を解説します。 sort()メソッドでリストをその場で並べ替える sort()は、リストそのものを並べ替える「in-place(破壊的)」な操作です。元のリストの順序が直接変更されるため、戻り値を受け取る必要はありません。 >>> a = [Hello, My, Followers] >>> a.sort() >>>