Python как отсортировать список по 2 значениям - PullRequest
0 голосов
/ 14 апреля 2011

Если у меня есть список

listOfFiles = [<str>,<intA>,<intB>]

Как мне отсортировать этот список сначала по intA, а затем по intB?

Конечный результат будет выглядеть как

<str>,1,1
<str>,1,2
<str>,1,3
<str>,2,1
<str>,2,2
etc

Ответы [ 3 ]

10 голосов
/ 14 апреля 2011

Используйте составной ключ (или, скорее, последовательность в качестве ключа).

listOfFiles.sort(key=operator.itemgetter(1, 2))
0 голосов
/ 17 мая 2015

Это также работает:

listOfFiles.sort(key=lambda x: (x[1], x[2]))
0 голосов
/ 14 апреля 2011

Сортировка списка Python выполняется на месте и гарантированно будет стабильной после 2.4 (я полагаю, это могло быть 2.5).Это означает, что вы можете сортировать так и должны получать нужные результаты:

listOfFiles.sort(key = lambda x: x[2])

listOfFiles.sort(key = lambda x: x[1])

Я предполагаю, что у вас действительно есть список списков или список кортежей.Если нет, приведите более полный пример вашей структуры данных.

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