Python在列表中排序列表

2024-05-16 21:51:58 发布

您现在位置:Python中文网/ 问答频道 /正文

给定:lst = [['John',3],['Blake',4],['Ted',3]]

结果:lst = [['John',3],['Ted',3],['Blake',4]]

我正在寻找一种方法来排序列表中的列表,首先用数字排序,然后按字母顺序排序,而不使用“itemgetter”语法。在


Tags: 方法列表排序顺序字母语法数字john
3条回答

既然你坚持:

lst.sort(key=lambda x: x[::-1])

您可以使用内置的sorted函数中的参数key。在

在这个key参数中,传递一个带有一个参数的函数,该函数返回将被排序的内容,而不是按列表的元素排序。在

def my_func(elem):
    # return a tuple (second element, first element)
    return (elem[1], elem[0])

>>> lst = [['John',3],['Blake',4],['Ted',3]]
>>> sorted(lst, key=my_func)
[['John', 3], ['Ted', 3], ['Blake', 4]]

甚至更短:

^{pr2}$

在这两种方法中,你先按数字排序,然后按字母顺序排序。在

我想在下面的问题中可能有人问过这个问题:

{a1}

以下是戴夫·韦伯给出的解释:

The ^{} argument to ^{}指定一个包含一个参数的函数,用于从每个列表元素中提取比较键。因此,我们可以创建一个简单的lambda,它返回要在排序中使用的每行的最后一个元素:

c2.sort(key = lambda row: row[2])

A ^{} is a simple anonymous function.当您想创建这样一个简单的一次性函数时,它很方便。不使用lambda的等效代码是:

^{pr2}$

如果要对更多的条目进行排序,只需使key函数返回一个元组,该元组包含按重要性排序的值。例如:

c2.sort(key = lambda row: (row[2],row[1]))

或者:

c2.sort(key = lambda row: (row[2],row[1],row[0]))

相关问题 更多 >