python:按子列表中的项目对列表列表进行排序[重复]

Posted

技术标签:

【中文标题】python:按子列表中的项目对列表列表进行排序[重复]【英文标题】:python: sort a list of lists by an item in the sublist [duplicate] 【发布时间】:2013-08-11 02:44:27 【问题描述】:

我有一个包含用户和分数的列表,如下所示:

[["user1", 100], ["user2", 234], ["user3", 131]...]

我想生成一个按分数降序对用户进行排序的列表:

[["user2", 234], ["user3", 131], ["user1", 100]...]

我该如何进行这种排序?

【问题讨论】:

【参考方案1】:
>>> li = [["user1", 100], ["user2", 234], ["user3", 131]]
>>> 
>>> import operator
>>> 
>>> sorted(li, key=operator.itemgetter(1))   # Ascending order
[['user1', 100], ['user3', 131], ['user2', 234]]

>>> sorted(li, key=operator.itemgetter(1), reverse=True)  # Reverse Sort
[['user2', 234], ['user3', 131], ['user1', 100]]

【讨论】:

【参考方案2】:

您可以通过传递键和反向来自定义排序行为。 sorted 将返回一个新列表。如果需要就地排序,请使用list.sort

>>> a = [["user1", 100], ["user2", 234], ["user3", 131]]
>>> sorted(a, key=lambda x: x[1], reverse=True)
[['user2', 234], ['user3', 131], ['user1', 100]]

【讨论】:

【参考方案3】:

sorted 接受可选的key 函数和反向参数。

>>> sorted([["user1", 100], ["user2", 234], ["user3", 131]], key=lambda x: x[1], reverse=True)
[['user2', 234], ['user3', 131], ['user1', 100]]

【讨论】:

【参考方案4】:
l = [["user1", 100], ["user2", 234], ["user3", 131]]
l.sort(lambda x, y: x[1])

【讨论】:

以上是关于python:按子列表中的项目对列表列表进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python - 如何按每个列表中的第四个元素对列表列表进行排序? [复制]

对列表框中的项目列表进行排序

python 选择排序

对列表视图中的现有项目进行排序

如何使用另一个列表中的项目顺序对字符串列表进行排序?

如何对 python 3 中的列表进行排序,优先考虑特定值?