Сортировка списка в Python изящное решение - PullRequest
0 голосов
/ 30 августа 2018

У меня есть следующий код для сортировки списка списков по последнему элементу:

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)

Я бы подумал, что у нас будет отсортированный список. Но это не работает. 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 голосов
/ 30 августа 2018

Вы можете использовать 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']]

Здесь также можно использовать лямбда-функцию.

a.sort(key= lambda x: x[3])

Но в этом простом случае лямбда-функция работает медленнее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...