我使用 CSV 对最痛的球员进行排序。我的姓名和分数在这样的列表中:
['4', 'Score One']
['8', 'Score Two']
['6', 'Score Three']
它是通过循环遍历文件、找到最高分数并使用该分数和玩家姓名创建一个新列表而创建的。
for row in reader:
highscores = ([row[-1], row[0]])
当我打印(已排序(高分))
时,会返回相同的列表。我希望它按如下方式排序:
['8', 'Score Two']
['6', 'Score Three']
['4', 'Score One']
如果有人可以向我解释为什么 sorted
不起作用以及我可以采取哪些措施来解决它,那就太好了。
最佳答案
您的问题是 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']]
关于python - 使用字符串和整数对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36189188/