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]
中排序答案 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])