Python
では、オブジェクトのリストを特定の属性でソートする場合、sort
やsorted
関数を使います。このとき、ソートの基準となるキーをlambda
関数やoperator.attrgetter
を用いて指定します。
lambda
を使ったソート
lambda
を使ってソートする最も簡単な方法です。例として、オブジェクトのcount
属性に基づいてリストを降順にソートします。
my_list.sort(key=lambda x: x.count, reverse=True)
attrgetter
を使ったソート
attrgetter
はlambda
の代替手段で、特に大規模なリストを扱う場合にパフォーマンスが向上します。
from operator import attrgetter
my_list.sort(key=attrgetter('count'), reverse=True)
attrgetter
を使うことでコードの可読性も向上し、パフォーマンス面でもメリットがあります。
複数の属性でのソート
複数の属性でソートする場合も、lambda
やattrgetter
で簡単に実装可能です。例えば、name
とcount
の両方でソートする場合は次のようにします。
my_list.sort(key=lambda x: (x.name, x.count))
attrgetter
を使用した場合も同様です。
my_list.sort(key=attrgetter('name', 'count'))
まとめ
Python
でオブジェクトのリストをソートする場合、lambda
とattrgetter
は便利で強力なツールです。lambda
は簡潔ですが、パフォーマンスを重視するならattrgetter
を使うとよいでしょう。両方の手法を理解することで、より効率的なデータ操作が可能になります。