我参与足球桌计划,用户应该可以写一些分数,然后打印一张桌子。所有团队及其数据(例如他们玩了多少匹配以及他们拥有多少分等)都是列表中的对象。此列表按团队打印前的点数排序。如果这些点是相同的,它会按其他东西进行排序,最后按名称排序:
teamData.sort(key = lambda x: (-x.points, -x.goalDifference, -x.goalsForward, x.name))
这完全符合我的要求。当我打印列表时,我喜欢这样:
position = 1
for team in teamData:
print(position, end = ": ")
print(team)
position += 1
(teamData
是存储所有团队对象的变量)
输出可能如下所示:
1: TeamA,1,1,0,0,2,0,2,3
2: TeamB,1,1,0,0,2,0,2,3
3: TeamC,1,0,1,1,0,0,0,1
问题是(在这种情况下)teamA
和teamB
具有完全相同的数据,因此,我希望输出看起来像这样:
1: TeamA,1,1,0,0,2,0,2,3
1: TeamB,1,1,0,0,2,0,2,3
3: TeamC,1,0,1,1,0,0,0,1
答案 0 :(得分:0)
记住前一个团队:
old_position, old_team = 0, None
for position, team in enumerate(teamData, 1):
# I use enumerate() so I can change the position variable.
if old_position and '''old_team and team compare to the same rank''':
position = old_position
else:
old_position, old_team = position, team
print(position, team, sep=': ')