在Python中对列表进行排序

时间:2010-08-03 16:30:01

标签: python list sorting

c2=[]
row1=[1,22,53]
row2=[14,25,46]
row3=[7,8,9]

c2.append(row2)
c2.append(row1)
c2.append(row3)

c2现在是:

[[14, 25, 46], [1, 22, 53], [7, 8, 9]]

我如何以例如:

的方式对c2进行排序
for row in c2:

sort on row[2]

结果将是:

[[7,8,9],[14,25,46],[1,22,53]]

另一个问题是我如何首先按行排序[2]并在行集[1]

中排序

3 个答案:

答案 0 :(得分:16)

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

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

A lambda is a simple anonymous function.当你想创建一个像这样的简单单一用途函数时,这很方便。不使用lambda的等效代码为:

def sort_key(row):
    return row[2]

c2.sort(key = sort_key)

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

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

或:

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

答案 1 :(得分:4)

>>> import operator
>>> c2 = [[14, 25, 46], [1, 22, 53], [7, 8, 9]]
>>> c2.sort(key=itemgetter(2))
>>> c2
[[7, 8, 9], [14, 25, 46], [1, 22, 53]]

答案 2 :(得分:3)

好吧,您想要的示例似乎表明您希望按列表中的最后一个索引进行排序,这可以通过以下方式完成:

sorted_c2 = sorted(c2, lambda l1, l2: l1[-1] - l2[-1])