インスタンス変数の1つが整数であるPythonのクラスがあります。リストにそれらのいくつかがある場合、そのリストでソートメソッドを呼び出すと、その整数インスタンス変数でソートする必要があります。それを迅速/効率的に行う方法はありますか、それとも、作成したクラスですべての比較メソッドを定義する必要がありますか?
2 に答える
2
from operator import attrgetter
print sorted(your_objects, key=attrgetter('the name of your int'))
または:
your_list.sort(key=attrgetter('the name of your int'))
lambda
の代わりに使用することもできますoperator.attrgetter
:
your_list.sort(key=lambda L: L.your_int)
于 2013-06-06T16:17:50.403 に答える
0
「...それとも、作成したクラスにすべての比較メソッドを定義するだけでよいでしょうか。」
モジュールを使用できfunctools
ます:
http://docs.python.org/2/library/functools.html
これの一部を自動化するには、クラスで less than および equality メソッドを定義してから、total_ordering クラス デコレータを使用して残りを生成します。ドキュメントで total_ordering に提供されている例を参照してください。間違いはありません!
key=blah
これは、クラスインスタンスを並べ替えたいコード内のすべてのケースで提供するよりも優れたアプローチだと思います。
于 2013-06-06T16:37:42.723 に答える