我正在编写一个程序,其中列出了所玩的足球比赛,并从中输出联赛中的排名。我完成了大部分的解析工作,但我正在努力解决这个问题。
排序标准如下: 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]
我的问题是,如何根据这些多重标准进行排序?
答案 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']