得分最高的前五名

时间:2018-10-18 15:01:27

标签: python

我在学校里做游戏时遇到编程挑战,最后,它显示了有史以来的前五名得分。我已经能够打印出前五名的分数,但我不知道如何使其与用户名一起打印分数。代码是:

with open("login.csv") as f:
    print(" ")
    print(" ")
    print("Usernames and scores:")
    reader=csv.reader(f)
    scores=(row[-1] for row in reader)
    topscore=sorted(scores, reverse=True)
    top5=topscore[:5]
    print(top5)

我得到的输出是:

Usernames and scores:
['82', '80', '66', '64', '62']

但是我想要的输出是:

Usernames and scores:
Dylan, 82
f, 80
Farai, 66
Dylan, 64
Dylan, 62

任何帮助 迪伦

我错过了这一点,但各列分别是名称,密码和得分。很抱歉错过了这些家伙。

2 个答案:

答案 0 :(得分:3)

您可以使用键功能对行进行排序,该功能允许基于最后一列进行排序:

with open("login.csv") as f:
    print(" ")
    print(" ")
    print("Usernames and scores:")
    reader=csv.reader(f)
    topscore=sorted(reader, key=lambda row: int(row[-1]), reverse=True)
    top5=topscore[:5]
    print('\n'.join(', '.join((username, score)) for username, _, score in top5))

答案 1 :(得分:0)

您似乎通过列表理解只选择了分数。 假设CSV是之类的,也许下面的方法会起作用?

files