【问题标题】:How do I sort this list in Python 3? [duplicate]如何在 Python 3 中对该列表进行排序? [复制]
【发布时间】:2019-01-30 19:17:55
【问题描述】:

我正在制作排行榜,目前我正在从 txt 文件中获取数据并将其转储到列表中。

列表的格式如下所示:

[['56', 'UsernameA'], ['73', 'UsernameB'], ['52', 'UsernameC'], ['10', 'UsernameD']]

我想创建一个排行榜,因此我想将列表从最高数字排序到最低数字,我尝试使用 sort() 函数,但这仅适用于整数并且我的列表包含用户名和分数,所以我不能把它转换成整数,除非我完全错了。

【问题讨论】:

  • sorted(your_list, reverse=True) ...
  • 只要确保在排序时在 key 参数中使用int(x[0]),以避免数字字符串的字母排序。
  • 或者更好的your_list.sort(reverse=True)以节省内存

标签: python python-3.x


【解决方案1】:

你是对的,你可以使用sorted()函数或者.sort()方法。

我可以看到两个选项以您想要的方式排序;两者都需要基于子列表的第一个元素进行排序;必须转换为整数。

然后您可以直接基于此启发式算法,但您必须使用 reverse=True 作为函数的参数,以便获得从最高到最低的排序。或者,您可以使用一些技巧并根据每个整数的负数进行排序:)。

l = [['56', 'UsernameA'], ['73', 'UsernameB'], ['52', 'UsernameC'], ['10', 'UsernameD']]
l.sort(key=lambda j: -int(j[0]))

l 修改为:

[['73', 'UsernameB'], ['56', 'UsernameA'], ['52', 'UsernameC'], ['10', 'UsernameD']]

【讨论】:

  • 这很有魅力,谢谢!也是不错的把戏。尽管我在任何地方都找不到答案,但人们确实将我的问题标记为重复。
  • @PyTest 没问题!享受它:)
猜你喜欢
  • 2013-12-06
  • 2018-07-21
  • 1970-01-01
  • 2016-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-27
  • 2020-02-10
相关资源
最近更新 更多