使用字符串和整数对列表进行排序

时间:2016-03-23 21:38:40

标签: python

我使用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无法正常工作以及我可以采取哪些措施来解决问题,那就太棒了。

1 个答案:

答案 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']]