我有以下代码来按最后一个元素对列表进行排序:
a = [['a','num1','num2','num3'],['b','ind1','ind2','ind3'],['c',12,0,24],['d',0,0,0],['e',3,5,100]]
print(a)
b,c = a[:2],a[2:]
d= c.sort(key=lambda x: x[1])
e = b+d
print(b)
print(c)
print(d)
print(e)
我认为e会有排序列表。但它不起作用。 d是没有
我也试过以下代码
a = [['a','num1','num2','num3'],['b','ind1','ind2','ind3'],['c',12,0,24],['d',0,0,0],['e',3,5,100]]
print(a)
b,c = a[:2],a[2:]
sorted(c,key=lambda x: x[-1], reverse=True)
d = b+c
print(d)
但在这种情况下,它无法排序,似乎返回原始列表。我该如何解决这个问题?
您可以使用itemgetter
>>> from operator import itemgetter
>>> L=[[0, 1, 'f'], [4, 2, 't'], [9, 4, 'afsd']]
>>> sorted(L, key=itemgetter(2))
[[9, 4, 'afsd'], [0, 1, 'f'], [4, 2, 't']]
这里也可以使用lambda函数。
a.sort(key= lambda x: x[3])
但在这种简单的情况下,lambda函数更慢