Python优雅解决方案中的列表排序列表

时间:2018-08-30 15:29:06

标签: python-3.x sorting

我有以下代码按最后一个元素对列表列表进行排序:

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)

但是在这种情况下,它无法排序,并且似乎返回了原始列表。 我该如何解决?

1 个答案:

答案 0 :(得分:0)

您可以使用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函数的速度较慢