• Xでシェア
  • LINEでシェア
  • このエントリーをはてなブックマークに追加

Python sortメソッドの使い方

この記事のポイント

  • リストを昇順・降順にソートする基本的な操作方法
  • カスタムソート条件による柔軟なソートの仕組みと使い方
  • 実際のデータ処理で活用できる具体的なソート実装例

目次

sortメソッドとは?

sortメソッドは、リストの要素を指定した順序でソートするメソッドです。このメソッドは、元のリストを直接変更し、新しいリストを作成せずに既存のリストをソートします。

デフォルトでは昇順(小さい値から大きい値へ)でソートしますが、reverseパラメータを使用することで降順にもソートできます。keyパラメータを指定することで、独自のソート条件を設定できます。

文字列の場合はアルファベット順、数値の場合は数値順でソートされます。sortメソッドは戻り値としてNoneを返すため、メソッドチェーンでの使用には注意が必要です。データの整理や分析において頻繁に使用されるメソッドです。

【関連】
Pythonをもっと詳しく学ぶならpaizaラーニング

基本構文

sortメソッドの基本的な構文は、list.sort()、list.sort(reverse=True)、list.sort(key=function)という形式です。引数を指定しない場合は昇順でソート、reverseをTrueにすると降順になります。

以下のコード例では、動物の名前と数値のリストをソートする基本的な方法を示しています。

引数を指定しない場合の基本的な使用例です。文字列のリストを昇順(あいうえお順)でソートします。

animals = ["ウサギ", "イヌ", "ネコ", "ハムスター"] animals.sort() print(f"昇順: {animals}")

出力結果:

昇順: ['イヌ', 'ウサギ', 'ネコ', 'ハムスター']

reverse=Trueを指定して降順でソートする例です。数値のリストを大きい順にソートします。

numbers = [5, 2, 8, 1, 9] numbers.sort(reverse=True) print(f"降順: {numbers}")

出力結果:

降順: [9, 8, 5, 2, 1]

実用例

ここからは、sortメソッドの実用的な使用例を8つのサンプルコードで詳しく解説します。

各例では、実際のプログラミングで遭遇する可能性が高い状況を想定し、sortメソッドのさまざまな活用方法を紹介します。カスタムソート条件、辞書のソート、日本語文字列の処理など、実践的な技術も含めて学習できます。

これらの例を通じて、sortメソッドの特徴や応用方法を理解し、実際のプログラム開発で効果的に活用できるようになります。

動物名を昇順でソート

動物名のリストを五十音順にソートする最も基本的な使用例です。この例では、動物園の動物リストを管理し、見やすい順序で表示する処理を示しています。

zoo_animals = ["ゾウ", "ライオン", "キリン", "パンダ", "サル"] print(f"ソート前: {zoo_animals}") zoo_animals.sort() print(f"五十音順: {zoo_animals}") backup_list = zoo_animals.copy() backup_list.sort(reverse=True) print(f"逆順: {backup_list}")

出力結果:

ソート前: ['ゾウ', 'ライオン', 'キリン', 'パンダ', 'サル']
五十音順:['キリン', 'サル', 'ゾウ', 'パンダ', 'ライオン']
逆順:['ライオン', 'パンダ', 'ゾウ', 'サル', 'キリン']

数値を降順でソート

数値のリストを降順でソートする例です。この例では、動物の年齢データを管理し、年齢の高い順にソートする処理を示しています。

animal_ages = [3, 1, 5, 2, 4, 6] animal_names = ["イヌ", "ネコ", "ウサギ", "ハムスター", "インコ", "カメ"] print(f"年齢データ: {animal_ages}") animal_ages.sort(reverse=True) print(f"年齢順(降順): {animal_ages}") young_animals = [age for age in animal_ages if age <= 3] print(f"3歳以下: {young_animals}")

出力結果:

年齢データ: [3, 1, 5, 2, 4, 6]
年齢順(降順): [6, 5, 4, 3, 2, 1]
3歳以下: [3, 2, 1]

文字列の長さでソート

文字列の長さを基準にしてソートする例です。この例では、動物名の文字数順にソート、短い名前から長い名前の順に表示する処理を示しています。

animal_names = ["イヌ", "ネコ", "ハムスター", "ウサギ", "インコ"] print(f"元のリスト: {animal_names}") animal_names.sort(key=len) print(f"文字数順(短い順): {animal_names}") animal_names.sort(key=len, reverse=True) print(f"文字数順(長い順): {animal_names}")

出力結果:

元のリスト: ['イヌ', 'ネコ', 'ハムスター', 'ウサギ', 'インコ']
文字数順(短い順): ['イヌ', 'ネコ', 'ウサギ', 'インコ', 'ハムスター']
文字数順(長い順):['ハムスター', 'ウサギ', 'インコ', 'イヌ', 'ネコ']

大文字小文字を無視したソート

英語の動物名で大文字小文字を区別せずにソートする例です。この例では、入力データの大文字小文字が混在している場合の正しいソート方法を示しています。

english_animals = ["Dog", "cat", "Rabbit", "hamster", "Bird"] print(f"元のリスト: {english_animals}") english_animals.sort() print(f"通常のソート: {english_animals}") english_animals.sort(key=str.lower) print(f"大文字小文字無視: {english_animals}")

出力結果:

元のリスト: ['Dog', 'cat', 'Rabbit', 'hamster', 'Bird']
通常のソート: ['Bird', 'Dog', 'Rabbit', 'cat', 'hamster']
大文字小文字無視: ['Bird', 'cat', 'Dog', 'hamster', 'Rabbit']

複数条件でのソート

複数の条件を組み合わせてソートする例です。この例では、動物の種類と年齢の両方を考慮して、優先順位を設定したソート処理を示しています。

animals_data = [ ("イヌ", 3), ("ネコ", 2), ("イヌ", 1), ("ウサギ", 2), ("ネコ", 4) ] print(f"元のデータ: {animals_data}") animals_data.sort(key=lambda x: (x[0], x[1])) print(f"名前→年齢順: {animals_data}")

出力結果:

元のデータ: [('イヌ', 3), ('ネコ', 2), ('イヌ', 1), ('ウサギ', 2), ('ネコ', 4)]
名前→年齢順: [('イヌ', 1), ('イヌ', 3), ('ウサギ', 2), ('ネコ', 2), ('ネコ', 4)]

辞書のリストをソート

辞書を要素として持つリストを特定のキーでソートする例です。この例では、動物の情報を辞書として管理し、年齢や名前でソートする処理を示しています。

pet_info = [ {"name": "イヌ", "age": 3, "weight": 10}, {"name": "ネコ", "age": 2, "weight": 4}, {"name": "ウサギ", "age": 1, "weight": 2}, {"name": "ハムスター", "age": 1, "weight": 1} ] print("年齢順でソート:") pet_info.sort(key=lambda x: x["age"]) for pet in pet_info: print(f"{pet['name']}: {pet['age']}歳")

出力結果:

年齢順でソート:
ウサギ: 1歳
ハムスター: 1歳
ネコ: 2歳
イヌ: 3歳

日本語文字列のソート

日本語の文字列を正しくソートする例です。この例では、動物名の日本語文字列を五十音順にソート、読みやすい形で表示する処理を示しています。

japanese_animals = ["イヌ", "ウサギ", "エミュー", "オウム", "カメ"] print(f"元のリスト: {japanese_animals}") japanese_animals.sort() print(f"五十音順: {japanese_animals}") long_names = ["ハムスター", "チンチラ", "モルモット", "ウサギ"] long_names.sort(key=lambda x: (len(x), x)) print(f"長さ→五十音順: {long_names}")

出力結果:

元のリスト: ['イヌ', 'ウサギ', 'エミュー', 'オウム', 'カメ']
五十音順: ['イヌ', 'ウサギ', 'エミュー', 'オウム', 'カメ']
長さ→五十音順: ['ウサギ', 'チンチラ', 'ハムスター', 'モルモット']

カスタム関数を使用したソート

独自の関数を定義して複雑なソートを行う例です。この例では、動物の特徴に基づいて優先順位を設定し、カスタム関数を使用したソート処理を示しています。

def animal_priority(animal): priorities = {"イヌ": 1, "ネコ": 2, "ウサギ": 3, "ハムスター": 4} return priorities.get(animal, 5) pet_list = ["ハムスター", "イヌ", "ウサギ", "ネコ", "インコ"] print(f"元のリスト: {pet_list}") pet_list.sort(key=animal_priority) print(f"優先順位順: {pet_list}") pet_list.sort(key=lambda x: (animal_priority(x), x)) print(f"優先順位→名前順: {pet_list}")

出力結果:

元のリスト: ['ハムスター', 'イヌ', 'ウサギ', 'ネコ', 'インコ']
優先順位順: ['イヌ', 'ネコ', 'ウサギ', 'ハムスター', 'インコ']
優先順位→名前順: ['イヌ', 'ネコ', 'ウサギ', 'ハムスター', 'インコ']

まとめ

sortメソッドは、リストの要素をさまざまな条件でソートする機能です。基本的な昇順・降順のソートから、カスタム関数を使用した複雑な条件でのソートまで、幅広い用途に対応できます。keyパラメータを活用することで、文字列の長さや辞書の特定キーなど、柔軟なソート条件を設定できます。

データの整理や分析において重要な役割を果たし、適切なソート条件を選択することで、効率的なデータ処理が可能になります。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. Pythonのリファレンス記事一覧
  4. Python sortメソッドの使い方