Сортировка списка списков в 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]]

другой вопрос состоит в том, как делают меня сначала вид строкой [2] и в том наборе строкой [1]

9
задан SilentGhost 3 August 2010 в 17:00
поделиться

3 ответа

Аргумент key для sort задает функцию одного аргумента, которая используется для извлечения ключа сравнения из каждого элемента списка. Таким образом, мы можем создать простую лямбда , которая возвращает последний элемент из каждой строки, которая будет использоваться при сортировке:

c2.sort(key = lambda row: row[2])

лямбда - это простая анонимная функция. Это удобно, если вы хотите создать такую ​​простую одноразовую функцию. Эквивалентный код, не использующий лямбда , будет выглядеть так:

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]))
16
ответ дан 4 December 2019 в 09:11
поделиться
>>> 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]]
4
ответ дан 4 December 2019 в 09:11
поделиться

Ну, ваш желаемый пример, похоже, указывает на то, что вы хотите отсортировать по последнему индексу в списке, что можно сделать с помощью этого:

sorted_c2 = sorted(c2, lambda l1, l2: l1[-1] - l2[-1])
3
ответ дан 4 December 2019 в 09:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: