/ オブジェクト属性を異なる順序でソート - python、python-3.x、ソート

異なる順序でオブジェクトの属性を並べ替える - python、python-3.x、sorting

サッカーリーグのプログラムを書いています。印刷する前にテーブルを並べ替えます。各チームは特定の属性を持つクラスのメンバーであり、これまでのところ整数属性を正しくソートできました。

for team in sorted(teams, key=attrgetter("points", "goalDiff", "scored", "name"), reverse = True):

私はを除いてすべての属性が欲しい name 元に戻すには、「元に戻す」方法があります。 name このコード行に属性を含めるか、または別のアプローチをとる必要がありますか?

回答:

回答№1は6

すべての属性(名前を除く)が数値の場合は、それらの番号を否定してそれらの逆ソートを行います。

sorted(teams, key=lambda t: (-t.points, -t.goalDiff, -t.scored, t.name))

数字を負にすると、実際にソートを逆にする必要なく、ソート順を逆にすることができます。

そうでない場合は、2回ソートする必要があります。 name 属性を順方向に並べ、次に他の属性を逆にします。任意のオブジェクトに対して points, goalDiff そして scored 等しい場合、Pythonが使用するソートアルゴリズムは安定しているため、元のソート順(名前順)が保持されます。

sorted(
sorted(teams,  key=attrgetter("name")),
key=attrgetter("points", "goalDiff", "scored"),
reverse=True)