-1

私は、プレーされたサッカーの試合のリストを取得し、そこからリーグの順位を出力するプログラムを書いています。ほとんどの解析作業は完了しましたが、並べ替えに苦労しています。

ソート基準は次のとおりです。 A) ポイントが最も多いチーム。B) 試合数が最も少ないチーム。C) 勝利数が最も多いチーム。D) 得失点差が最も大きいチーム。E) 最も多くのゴールを決めたチーム。F) アルファベット順。

私のコードは、すべてのゲーム入力から作成された辞書を次の形式で提供します。

{'Cagliari': [3, 1, 0, 0, 2, 1, 1, 1], 'Torino': [0, 0, 0, 1, 1, 2, -1, 1], 
'Lazio': [3, 1, 0, 0, 4, 2, 2, 1], 'AC Milan': [1, 0, 1, 0, 1, 1, 0, 1], 
'Napoli': [0, 0, 0, 1, 2, 4, -2, 1], 'Inter Milan': [1, 0, 1, 0, 1, 1, 0, 1]}

各キーと値のペアが特定のパターンにある場合:

'Team' : [points, wins, ties, losses, goals for, goals against, goal differential, 
games played]

私の質問は、これらの複数の基準に基づいてどのように並べ替えるのですか?

4

1 に答える 1

1
>>> teams = {'Cagliari': [3, 1, 0, 0, 2, 1, 1, 1], 'Torino': [0, 0, 0, 1, 1, 2, -1, 1], 
... 'Lazio': [3, 1, 0, 0, 4, 2, 2, 1], 'AC Milan': [1, 0, 1, 0, 1, 1, 0, 1], 
... 'Napoli': [0, 0, 0, 1, 2, 4, -2, 1], 'Inter Milan': [1, 0, 1, 0, 1, 1, 0, 1]}
>>> sorted(teams, key=lambda t : (teams[t][0], teams[t][-1]*-1, teams[t][1], teams[t][-2], teams[t][4], t))
['Napoli', 'Torino', 'AC Milan', 'Inter Milan', 'Cagliari', 'Lazio']
于 2013-11-08T06:46:06.220 に答える