-
リストの要素を直接比較する方法: 以下の例では、リスト内の数値を昇順にソートするカスタム比較子を定義しています。
def custom_comparator(item): return item[0] # リスト内の最初の要素で比較 my_list = [[1, 'apple'], [3, 'banana'], [2, 'carrot']] sorted_list = sorted(my_list, key=custom_comparator) print(sorted_list)
出力:
[[1, 'apple'], [2, 'carrot'], [3, 'banana']]
-
オブジェクトの属性を比較する方法: オブジェクトの属性を基準にソートする場合は、
key
パラメータにラムダ関数を使用します。以下の例では、Person
クラスのage
属性でソートしています。class Person: def __init__(self, name, age): self.name = name self.age = age people = [ Person('Alice', 25), Person('Bob', 30), Person('Charlie', 20) ] sorted_people = sorted(people, key=lambda x: x.age) for person in sorted_people: print(person.name, person.age)
出力:
Charlie 20 Alice 25 Bob 30
-
複数の基準でソートする方法: 複数の基準に基づいてソートする場合は、
key
パラメータにタプルを返す関数を使用します。以下の例では、Person
クラスのage
属性とname
属性の順にソートしています。sorted_people = sorted(people, key=lambda x: (x.age, x.name))
ソートされた結果は、年齢が同じ場合に名前でソートされます。
これらはPythonでカスタム比較子を使用してソートするいくつかの一般的な方法です。ソートするデータの種類や要件に応じて、これらの例を参考にして適切な方法を選択してください。