カテゴリ: Python 更新日: 2025/11/15

Pythonの関数を使ったカスタムソート(keyパラメータ)をわかりやすく解説!初心者でも使える並べ替えテクニック

Pythonの関数を使ったカスタムソート(keyパラメータ)
Pythonの関数を使ったカスタムソート(keyパラメータ)

先生と生徒の会話形式で理解しよう

生徒

「Pythonでリストを並べ替えるときに、自分の好きなルールで並べたいです。どうしたらできますか?」

先生

「それなら、Pythonのソート関数にあるkeyというパラメータを使う方法がおすすめです。これを使うと、自分で並べ替えの基準を自由に決められますよ。」

生徒

「keyパラメータって何ですか?どうやって使うんでしょう?」

先生

「これから基本からわかりやすく説明しますね。具体的な例もたくさん紹介します!」

1. Pythonのソートとは?

1. Pythonのソートとは?
1. Pythonのソートとは?

Pythonにはリストを並べ替えるためのsort()メソッドやsorted()関数があります。これらはデフォルトで数字や文字を小さい順やアルファベット順に並べ替えます。

例えば、数字のリストを小さい順に並べ替えたいときはこう書きます。


numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers)  # [1, 2, 5, 9]

このままだと単純な昇順や降順ですが、「もっと複雑なルールで並べたい!」というときはどうするでしょう?

2. keyパラメータとは?

2. keyパラメータとは?
2. keyパラメータとは?

keyパラメータは、ソートする基準を指定できる引数です。keyに「関数」を渡すことで、リストの各要素をその関数に渡し、戻り値をもとに並べ替えます。

わかりやすく例えると、各要素に「評価点」をつけて、その点数で並べるようなイメージです。

この関数をカスタムできるので、自分の好きなルールで並べられます。

3. 関数を使ったカスタムソートの基本

3. 関数を使ったカスタムソートの基本
3. 関数を使ったカスタムソートの基本

たとえば、文字列のリストを「文字の長さ」で並べ替えたいとします。その場合、len関数をkeyに指定します。


words = ['apple', 'banana', 'cherry', 'date']
words.sort(key=len)
print(words)  # ['date', 'apple', 'banana', 'cherry']

このように、key=lenで「単語の長さ」を基準にソートしています。

4. オリジナル関数を使ってソートする方法

4. オリジナル関数を使ってソートする方法
4. オリジナル関数を使ってソートする方法

さらに、自分で作った関数もkeyに指定できます。たとえば、単語の最後の文字で並べたいときは、こう書きます。


def last_char(word):
    return word[-1]  # 単語の最後の文字を返す

words = ['apple', 'banana', 'cherry', 'date']
words.sort(key=last_char)
print(words)  # ['banana', 'apple', 'date', 'cherry']

この例では、関数last_charが単語の最後の文字を返し、その文字を基準に並べ替えています。

5. sorted()関数でもkeyパラメータが使える

5. sorted()関数でもkeyパラメータが使える
5. sorted()関数でもkeyパラメータが使える

sorted()関数は元のリストを変更せず、新しいソート済みのリストを返します。ここでもkeyパラメータが使えます。


numbers = [5, 2, 9, 1]
sorted_numbers = sorted(numbers, key=lambda x: -x)  # 降順に並べ替え
print(sorted_numbers)  # [9, 5, 2, 1]
print(numbers)  # 元のリストは変わらない [5, 2, 9, 1]

この例では、lambda関数を使って、数字をマイナスに変換し、降順に並べています。

6. lambda式(無名関数)を使ったカスタムソート

6. lambda式(無名関数)を使ったカスタムソート
6. lambda式(無名関数)を使ったカスタムソート

ここで出てきたlambdaは、「名前のない関数」を簡単に書く方法です。簡単な処理をすぐに作りたいときに便利です。

例えば、文字列の最初の文字で並べるなら、こんな感じです。


words = ['apple', 'banana', 'cherry', 'date']
words.sort(key=lambda w: w[0])
print(words)  # ['apple', 'banana', 'cherry', 'date']

このように、一行で関数を作って渡すことができます。

7. 実用例:辞書のリストを特定のキーでソートする

7. 実用例:辞書のリストを特定のキーでソートする
7. 実用例:辞書のリストを特定のキーでソートする

たとえば、名前と年齢が入った辞書のリストを、年齢でソートしたいとき。


people = [
    {'name': 'Alice', 'age': 30},
    {'name': 'Bob', 'age': 25},
    {'name': 'Charlie', 'age': 35}
]

people.sort(key=lambda person: person['age'])
print(people)

出力は年齢の小さい順に並びます。


[{'name': 'Bob', 'age': 25}, {'name': 'Alice', 'age': 30}, {'name': 'Charlie', 'age': 35}]

8. まとめ:keyパラメータで自由にソートできる!

8. まとめ:keyパラメータで自由にソートできる!
8. まとめ:keyパラメータで自由にソートできる!

Pythonのソートでkeyパラメータを使うと、並べ替えのルールを自由にカスタマイズできます。関数やlambdaを使いこなして、複雑な条件でも思い通りにリストを整理しましょう。

初心者でも使いやすいので、ぜひ色んな例で試してみてくださいね。

カテゴリの一覧へ
新着記事
New1
Django
Djangoバリデーション完全入門|cleanメソッドで学ぶカスタムチェックの書き方【初心者向け】
New2
Flask
FlaskとAWS S3を連携!静的ファイルを効率よく配信する初心者向け完全ガイド
New3
Python
Pythonで例外の種類ごとに処理を分ける方法を完全解説!初心者でもわかる複数except入門
New4
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.3
Java&Spring記事人気No3
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.4
Java&Spring記事人気No4
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.5
Java&Spring記事人気No5
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonのコーディング規約(PEP8)とは?初心者でもわかる書き方の基本ルール
No.7
Java&Spring記事人気No7
Flask
Flaskでフロントエンドからファイルアップロードを行う基本手順【初心者向け】
No.8
Java&Spring記事人気No8
Flask
Flaskでデータベースエラーを処理する方法!初心者にもわかる例外の使い方