Как я могу отсортировать сжатый список в зависимости от условий? - PullRequest
0 голосов
/ 06 апреля 2019

Я пытаюсь отсортировать сжатый список по значению.Таким образом, список выглядит примерно так:

[('Job 1', '3', '1'), ('Job 2', '1', '3'), ('Job 3', '2', '3'),('Job 4', '4', '3')]

Я хочу отсортировать список по значению индекса [1] и [2].Например:

Job 1         3         1
Job 2         1         3
Job 3         2         3
Job 4         4         3

Если значение в столбце 2 меньше столбца 3, таблица станет такой:

Job 2         1         3
Job 3         2         3
Job 1         3         1
Job 4         4         3

Я искал метод, но он выглядит кактупик.Пока что я нашел только sort() весь список, основанный на индексе.

1 Ответ

1 голос
/ 06 апреля 2019

Вы можете просто sort это использовать keyfunc, который возвращает index 1 и index 2 элемент, преобразованный в int,

>>> x
[('Job 1', '3', '1'), ('Job 2', '1', '3'), ('Job 3', '2', '3'), ('Job 4', '4', '3')]
>>> sorted(x, key=lambda x: (int(x[1]), int(x[2])))
[('Job 2', '1', '3'), ('Job 3', '2', '3'), ('Job 1', '3', '1'), ('Job 4', '4', '3')]
>>> y = _
>>> for i in x:
...   print(i)
... 
('Job 1', '3', '1')
('Job 2', '1', '3')
('Job 3', '2', '3')
('Job 4', '4', '3')
>>> for j in y:
...   print(j)
... 
('Job 2', '1', '3')
('Job 3', '2', '3')
('Job 1', '3', '1')
('Job 4', '4', '3')
>>> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...