Сортировка вложенного 2D-списка по элементу с 0-м индексом - PullRequest
2 голосов
/ 04 августа 2020

У меня есть следующий 2D-список:

[['0', '1', '16', '35'], ['3', '41', '80', '58'], ['2', '14', '84', '90'], ['1', '14', '108', '113'], ['8', '129', '147', '38']]

Я хочу отсортировать этот 2D-список на основе 1-го столбца (0-й индекс) каждого элемента, например:

[['0', '1', '16', '35'],['1', '14', '108', '113'],['2', '14', '84', '90'],
['3', '41', '80', '58'],['8', '129', '147', '38']]

Ответы [ 5 ]

1 голос
/ 04 августа 2020

Вы можете использовать sorted() функцию с key как lambda, чтобы получить значение, на основе которого вы хотите выполнить сортировку. Например, для сортировки лексикографически на основе элемента с 0-м индексом передайте ключ как lambda x: x[0]:

>>> my_list = [['0', '1', '16', '35'], ['3', '41', '80', '58'], ['2', '14', '84', 

>>> sorted(my_list, key=lambda x: x[0])
[['0', '1', '16', '35'], ['1', '14', '108', '113'], ['2', '14', '84', '90'], ['3', '41', '80', '58'], ['8', '129', '147', '38']]

Однако, если вы хотите numeri c sorting , введите ключ приведения к int. Следовательно, ваш ключ должен быть lambda x: int(x[0]):

>>> sorted(my_list, key=lambda x: int(x[0]))
[['0', '1', '16', '35'], ['1', '14', '108', '113'], ['2', '14', '84', '90'], ['3', '41', '80', '58'], ['8', '129', '147', '38']]
0 голосов
/ 04 августа 2020

можно использовать sorted() and lambda

li=[[1, 0.23],
 [2, 0.39],
 [4, 0.31],
[5, 0.27]]

sorted(li,key=lambda l:l[0], reverse=False)

вывод

[[1, 0.23], [2, 0.39], [4, 0.31], [5, 0.27]]
0 голосов
/ 04 августа 2020
li.sort(key=lambda row: int(row[0]))

Дополнительная информация здесь: https://wiki.python.org/moin/HowTo/Sorting/ Но в следующий раз, пожалуйста, проведите собственное исследование, прежде чем спрашивать, я нашел несколько ответов, просто набрав ваш заголовок + "python"

0 голосов
/ 04 августа 2020

Используйте sorted:

from operator import itemgetter
l = [['0', '1', '16', '35'], ['3', '41', '80', '58'], ['2', '14', '84', '90'], ['1', '14', '108', '113'], ['8', '129', '147', '38']]
print(sorted(l, key=int(itemgetter(0))))

Или

print(sorted(l, key=lambda x:int(x[0]))
0 голосов
/ 04 августа 2020

Вы можете использовать функцию sorted.

a = [['0', '1', '16', '35'], ['3', '41', '80', '58'], ['2', '14', '84', '90'], ['1', '14', '108', '113'], ['8', '129', '147', '38']]

print(sorted(a, key=lambda x : x[0]))

ВЫХОД (по желанию):

[['0', '1', '16', '35'], ['1', '14', '108', '113'], ['2', '14', '84', '90'], ['3', '41', '80', '58'], ['8', '129', '147', '38']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...