如果积分相同,则在足球桌中打印相同位置

时间:2015-05-06 19:56:48

标签: python

我参与足球桌计划,用户应该可以写一些分数,然后打印一张桌子。所有团队及其数据(例如他们玩了多少匹配以及他们拥有多少分等)都是列表中的对象。此列表按团队打印前的点数排序。如果这些点是相同的,它会按其他东西进行排序,最后按名称排序:

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

问题是(在这种情况下)teamAteamB具有完全相同的数据,因此,我希望输出看起来像这样:

    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

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=': ')