Pythonでのソート比較子の使用方法


  1. リストの要素を単純に昇順または降順にソートする場合、以下のように比較子を使用します。
my_list = [5, 2, 8, 1, 9]
sorted_list = sorted(my_list)  # 昇順にソート
reverse_sorted_list = sorted(my_list, reverse=True)  # 降順にソート
print(sorted_list)  # [1, 2, 5, 8, 9]
print(reverse_sorted_list)  # [9, 8, 5, 2, 1]
  1. オブジェクトのリストを特定の属性でソートする場合、keyパラメータを使用して比較子を指定します。以下は、オブジェクトのリストを年齢で昇順にソートする例です。
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
people = [
    Person('Alice', 25),
    Person('Bob', 18),
    Person('Charlie', 35)
]
sorted_people = sorted(people, key=lambda x: x.age)
for person in sorted_people:
    print(person.name, person.age)
# 出力:
# Bob 18
# Alice 25
# Charlie 35
  1. 複数の基準でソートする場合、比較子に複数の属性を持つタプルを返す関数を使用します。以下は、名前で昇順にソートし、名前が同じ場合は年齢で降順にソートする例です。
sorted_people = sorted(people, key=lambda x: (x.name, -x.age))
for person in sorted_people:
    print(person.name, person.age)
# 出力:
# Alice 25
# Bob 18
# Charlie 35

これらの例は、Pythonでソート比較子を使用する方法を示しています。ソートの基準をカスタマイズするためには、比較子を適切に定義して使用することが重要です。