Python 3でオブジェクトの属性に基づいてリストをソートする方法は?

PYTHON3 チュートリアル

Python 3におけるオブジェクト属性に基づくリストのソート

Pythonでは、オブジェクトのリストをその属性に基づいてソートすることが可能です。以下に、Python 3を使用してこのようなソートを行う方法のサンプルコードをいくつか示します。

例1: 単一属性によるソート

最初の例では、クラスの単一の属性に基づいてリストをソートします。ここでは、Personクラスが定義され、age属性に基づいてリストをソートします。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return f"{self.name} ({self.age})"

people = [Person("John", 30), Person("Doe", 25), Person("Jane", 35)]
people.sort(key=lambda x: x.age)
print(people)

このコードは、年齢に基づいて人々のリストをソートし、出力は以下のようになります。

[Doe (25), John (30), Jane (35)]

例2: 複数の属性によるソート

次の例では、複数の属性でソートする方法を示します。この例では、Personクラスのインスタンスを年齢と名前に基づいてソートします。

people = [Person("John", 30), Person("Adam", 25), Person("John", 22)]
people.sort(key=lambda x: (x.age, x.name))
print(people)

このコードでは、まず年齢でソートし、次に名前でソートします。出力結果は次の通りです。

[John (22), Adam (25), John (30)]

例3: 降順ソート

最後に、属性に基づいてリストを降順にソートする方法を示します。この例では、age属性を使用して、リストを降順にソートします。

people = [Person("John", 30), Person("Doe", 25), Person("Jane", 35)]
people.sort(key=lambda x: x.age, reverse=True)
print(people)

このコードは、年齢を降順にソートし、以下のような出力を生成します。

[Jane (35), John (30), Doe (25)]

これらの例を通じて、Pythonでオブジェクトの属性に基づいてリストを効率的にソートする方法を学べます。この技術は、データを整理しやすくするために非常に便利です。

購読
通知
0 Comments
Inline Feedbacks
View all comments