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

问题描述 投票:1回答:1

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

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)

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

python-3.x sorting
1个回答
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函数更慢

© www.soinside.com 2019 - 2024. All rights reserved.