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でオブジェクトの属性に基づいてリストを効率的にソートする方法を学べます。この技術は、データを整理しやすくするために非常に便利です。