在Python中对列表的列表进行排序
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]]
3 个回答
3
好的,你想要的例子似乎表明你想根据列表中的最后一个索引来排序,这可以通过下面的方式实现:
sorted_c2 = sorted(c2, lambda l1, l2: l1[-1] - l2[-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]]
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。
27
在调用 sort
方法时,key
参数是一个函数,这个函数有一个输入,用来从每个列表元素中提取出一个用于比较的关键值。 这样我们可以创建一个简单的 lambda
函数,它会返回每一行的最后一个元素,用来进行排序:
c2.sort(key = lambda row: row[2])
一个 lambda
是一个简单的匿名函数。 当你想创建一个简单的、只用一次的函数时,这个功能非常方便。 如果不使用 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]))