我使用CSV来排序玩家最高的疮。我在这样的列表中有姓名和分数:
['4', 'Score One']
['8', 'Score Two']
['6', 'Score Three']
通过循环浏览文件创建,找到最高分数并使用此分数和玩家名称创建新列表。
for row in reader:
highscores = ([row[-1], row[0]])
当我print (sorted(highscores))
时,同样的列表会返回给我。我希望它按原样排序:
['8', 'Score Two']
['6', 'Score Three']
['4', 'Score One']
如果有人可以向我解释为什么sorted
无法正常工作以及我可以采取哪些措施来解决问题,那就太棒了。
答案 0 :(得分:2)
您的问题是highscores
的每个元素实际上都是字符串列表,而不是数字。这些行没有有用的顺序。
使用key
参数进行排序,以获得每行的整数分数:
>>> highscores = [['4', 'Score One'],
['8', 'Score Two'],
['6', 'Score Three']]
>>> sorted(highscores, key=lambda x: int(x[0]))
[['4', 'Score One'], ['6', 'Score Three'], ['8', 'Score Two']]