【2024】Pythonのsorted()関数を徹底解説!sort()との違いやカスタムキーを使ったソートまで解説

Pythonのsorted()関数を使うと、リストやタプルなどのデータを簡単に並べ替えることができます。

本記事では、sorted()の基本的な使い方、sort()との違い、さらにカスタムキーを使った応用的なソートまで徹底解説します。これを読めば、初心者の方でもsorted()を自在に使いこなせるようになりますので、ぜひ最後までご覧ください。

Pythonのsorted()関数とは?

Pythonのsorted()関数は、リストやタプル、文字列などの「反復可能なデータ」をソートして新しいリストを返す組み込み関数です。元のデータを変更することなく、新しいソートされたリストを返してくれるため、非常に便利な機能です。

  1. sorted()の基本的な使い方
  2. sorted()が返す値について

sorted()の基本的な使い方

sorted()関数は、Pythonでデータを並べ替えるための最も簡単な方法の一つです。この関数は、リストやタプルのような反復可能なオブジェクトを昇順でソートし、新しいリストとして返します。以下のコード例を見てみましょう。

numbers = [3, 1, 4, 1, 5, 9, 2, 6]sorted_numbers = sorted(numbers)
print(sorted_numbers) # 出力: [1, 1, 2, 3, 4, 5, 6, 9]

このように、元のリストnumbersは変更されることなく、sorted()関数を使って新しいリストが生成されます。sorted()を使うとデータの並び替えが非常に簡単に行え、元のデータの状態も保持できる点が大きな特徴です。

sorted()が返す値について

sorted()関数は、新しいリストとして並べ替えた結果を返します。このため、元のデータはそのままで、新たにソートされたデータが別のオブジェクトとして得られます。例えば、以下のコードを考えてみましょう。

tuple_data = (10, 3, 7, 1)
sorted_tuple = sorted(tuple_data)
print(sorted_tuple) # 出力: [1, 3, 7, 10]

元のタプルtuple_dataは変更されず、新しいリストsorted_tupleが生成されています。この点が、データを破壊的に変更してしまうsort()メソッドと大きく異なる点です。

さらに、Pythonの他の関数について詳しく知りたい方は、以下の記事をご覧ください。

Python関数の基礎から応用まで!コーディングスキル向上の鍵を解説

Pythonのsorted()関数とsort()関数の違い

Pythonでは、データを並べ替えるためにsort()とsorted()の2つの異なる方法があります。それぞれの特徴と使い方を理解し、適切な場面で使い分けることが重要です。

  1. sort()の特徴と使用方法
  2. sorted()の特徴と使用方法
  3. どちらを使うべきかの判断基準

sort()の特徴と使用方法

sort()はリストのメソッドで、リスト自体を変更して並び替えます。つまり、元のリストの順序が変わってしまうという特徴があります。

numbers = [3, 1, 4, 1, 5, 9, 2, 6]numbers.sort()
print(numbers) # 出力: [1, 1, 2, 3, 4, 5, 6, 9]

sort()メソッドはリストに直接作用し、元のリストをソートされた状態に変更します。このメソッドはリスト専用であり、他のデータ型には使用できません。

sorted()の特徴と使用方法

sorted()は組み込み関数で、リスト以外にもタプルや文字列など、様々なデータ型に使用できます。また、元のデータを保持しつつ、新しいソート済みのリストを生成するため、非破壊的な操作が可能です。

numbers = [3, 1, 4, 1, 5, 9, 2, 6]sorted_numbers = sorted(numbers)
print(sorted_numbers) # 出力: [1, 1, 2, 3, 4, 5, 6, 9]print(numbers) # 出力: [3, 1, 4, 1, 5, 9, 2, 6]

元のリストnumbersはそのまま維持され、新たにソートされたリストsorted_numbersが得られます。このように、sorted()は元のデータを変えずにソート結果を得たいときに便利です。

どちらを使うべきかの判断基準

sort()sorted()のどちらを使うべきかは、用途に応じて判断が必要です。以下に判断基準をまとめましたので、ぜひ参考にしてください。

元のデータを保持したい場合sorted()
元のリストを変更しても構わない場合sort()
リスト以外のデータ型をソートしたい場合sorted()

Pythonのsorted()関数でリストを昇順・降順にソートする方法

sorted()関数を使うことで、データを昇順や降順に並び替えることが可能です。ここでは、具体的な使い方を例を用いて説明します。

  1. 昇順にソートする例
  2. 降順にソートする例
  3. reverse引数の使い方

昇順にソートする例

デフォルトで、sorted()関数はデータを昇順に並び替えます。以下の例では、リストの数値を昇順で並べ替えます。

numbers = [3, 1, 4, 1, 5, 9, 2, 6]sorted_numbers = sorted(numbers)
print(sorted_numbers) # 出力: [1, 1, 2, 3, 4, 5, 6, 9]

このように、sorted()を使えば、特に追加の引数を指定しなくてもデータを昇順でソートすることができます。

降順にソートする例

降順にソートしたい場合には、sorted()のreverse引数を使います。reverse=Trueと指定することで、リストを降順に並び替えることが可能です。

numbers = [3, 1, 4, 1, 5, 9, 2, 6]sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers) # 出力: [9, 6, 5, 4, 3, 2, 1, 1]

reverse引数の使い方

sorted()関数では、reverse引数を使うことで並び替えの順序を切り替えられます。この引数はデフォルトでFalseになっており、Trueに設定することで降順ソートが実現します。

Pythonのsorted()関数でカスタムキーを使ったソート

Pythonのsorted()関数では、key引数を用いてカスタムキーを指定し、より柔軟なソートを行うことが可能です。ここでは、具体的なカスタムソートの方法を解説します。

  1. key引数とlambda関数の使い方
  2. リスト内の辞書をカスタムソートする例
  3. 複雑なカスタムソートの実装方法

key引数とlambda関数の使い方

key引数にlambda関数を指定することで、特定の条件に基づいてデータをソートできます。例えば、以下の例では文字列の長さに基づいてソートを行います。

words = [“apple”, “banana”, “cherry”, “date”]sorted_words = sorted(words, key=lambda word: len(word))
print(sorted_words) # 出力: [‘date’, ‘apple’, ‘banana’, ‘cherry’]

リスト内の辞書をカスタムソートする例

sorted()関数を使うと、リスト内にある辞書を特定のキーに基づいてソートすることもできます。例えば、辞書が複数の人の年齢を格納している場合、年齢に基づいて並べ替えたいときには、次のようにkey引数を使用します。

people = [
{“name”: “Alice”, “age”: 25},
{“name”: “Bob”, “age”: 30},
{“name”: “Charlie”, “age”: 20}
]sorted_people = sorted(people, key=lambda person: person[‘age’])
print(sorted_people)
# 出力: [{‘name’: ‘Charlie’, ‘age’: 20}, {‘name’: ‘Alice’, ‘age’: 25}, {‘name’: ‘Bob’, ‘age’: 30}]

このように、リスト内の辞書を特定のキーで並べ替えることで、必要なデータの優先順位を簡単に変更することができます。

複雑なカスタムソートの実装方法

複雑なカスタムソートもkey引数を用いて実現できます。例えば、次の例では、名前の長さでソートしたあと、年齢で昇順に並べ替えたい場合、key引数に複数の条件を組み合わせることが可能です。

people = [
{“name”: “Alice”, “age”: 25},
{“name”: “Bob”, “age”: 30},
{“name”: “Charlie”, “age”: 20}
]sorted_people = sorted(people, key=lambda person: (len(person[‘name’]), person[‘age’]))
print(sorted_people)
# 出力: [{‘name’: ‘Bob’, ‘age’: 30}, {‘name’: ‘Alice’, ‘age’: 25}, {‘name’: ‘Charlie’, ‘age’: 20}]

ここでは、まず名前の長さでソートし、次に年齢で昇順に並べ替えています。このように複数条件を組み合わせることで、より細かなカスタマイズが可能です。

使い方の基礎から学べる「Python基礎セミナー」

使い方の基礎から学べる「Python基礎セミナー」

もっと詳しく学びたい方は、「Python基礎セミナー」を受講して、実践的なスキルを身につけましょう!

Python基礎セミナーはこちら

未経験からマスターレベルまで到達たった2日間でPythonをマスター
初心者向けカリキュラムAIやプログラミングの前提知識がなくても安心
実用的な技術仕事や転職・独立に生かせるスキルを習得
オンラインまたは対面で受講可能ご自身に合った方法を選べます

Pythonを使ってAIプログラムを作成したい方は、以下の記事が参考になると思いますので、ぜひご参照ください。

【2024】初心者がPythonで作れるもの5選!すぐに作れるものを徹底解説

Pythonのsorted()関数まとめ

Pythonのsorted()関数は、様々なデータ型に対して簡単にソートを行うための便利なツールです。本記事では、sorted()関数の基本的な使い方から、sort()との違い、カスタムキーを使った応用的なソートまで解説しました。sorted()関数は、元のデータを変更せずにソートされた結果を新しいリストとして返してくれるため、安全にデータを操作したいときに非常に便利です。

また、sorted()はリストだけでなく、タプルや文字列、さらには辞書といったさまざまなデータ型に対応しているため、様々な用途で活用することができます。これにより、Pythonでのデータ操作がさらに効率的になります。ぜひこの記事で学んだ内容を活用して、Pythonでのソート処理を自在に扱えるようになってください。

最新情報をチェックしよう!