按多个标准对项目进行排序

时间:2013-11-08 06:35:55

标签: python sorting python-3.x dictionary

我正在编写一个程序,其中列出了所玩的足球比赛,并从中输出联赛中的排名。我完成了大部分的解析工作,但我正在努力解决这个问题。

排序标准如下: 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]

我的问题是,如何根据这些多重标准进行排序?

1 个答案:

答案 0 :(得分: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']