如何根据条件对压缩列表进行排序?

时间:2019-04-06 09:54:33

标签: python list sorting

我正在尝试根据值对压缩列表进行排序。所以列表是这样的

[('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 个答案:

答案 0 :(得分:1)

您可以使用sortkeyfunc,将返回的index 1index 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')
>>>