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

标签 python

我使用 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/

相关文章:

python - TensorFlow 1.5.0-rc0 : error using `tf.app.flags`

python - 在python中将二维数组转换为彩色图像

python - 无法更改 matplotlib 中的刻度标签属性

python - python 对象实例化失败

python - 在 python 中对属性应用 `map`

python - 如何为SVC绘制训练数据和训练目标

python - 使用 Jinja2 (Flask) 模板引擎参数化可重用 block

python - 在python中解析文本文件

python - 为什么 Pandas 中的多重处理比简单计算慢?

python - 如何在Python中仅复制嵌套字典的键结构?