Pythonでは、オブジェクトのリストを特定の属性でソートする場合、sortsorted関数を使います。このとき、ソートの基準となるキーをlambda関数やoperator.attrgetterを用いて指定します。

lambdaを使ったソート

lambdaを使ってソートする最も簡単な方法です。例として、オブジェクトのcount属性に基づいてリストを降順にソートします。

my_list.sort(key=lambda x: x.count, reverse=True)

attrgetterを使ったソート

attrgetterlambdaの代替手段で、特に大規模なリストを扱う場合にパフォーマンスが向上します。

from operator import attrgetter
my_list.sort(key=attrgetter('count'), reverse=True)

attrgetterを使うことでコードの可読性も向上し、パフォーマンス面でもメリットがあります。

複数の属性でのソート

複数の属性でソートする場合も、lambdaattrgetterで簡単に実装可能です。例えば、namecountの両方でソートする場合は次のようにします。

my_list.sort(key=lambda x: (x.name, x.count))

attrgetterを使用した場合も同様です。

my_list.sort(key=attrgetter('name', 'count'))

まとめ

Pythonでオブジェクトのリストをソートする場合、lambdaattrgetterは便利で強力なツールです。lambdaは簡潔ですが、パフォーマンスを重視するならattrgetterを使うとよいでしょう。両方の手法を理解することで、より効率的なデータ操作が可能になります。