Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据条件对压缩列表进行排序?_Python_List_Sorting - Fatal编程技术网

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

Python 如何根据条件对压缩列表进行排序?,python,list,sorting,Python,List,Sorting,我正在尝试根据值对压缩列表进行排序。所以清单是这样的 [‘作业1’、‘作业3’、‘作业1’、‘作业2’、‘作业1’、‘作业3’、‘作业2’、‘作业3’、‘作业4’、‘作业4’、‘作业3’] 我想做的是根据索引[1]和[2]的值对列表进行排序。例如: Job 1 3 1 Job 2 1 3 Job 3 2 3 Job 4 4 3 如果第2列中的值小于第3列,则该表将变为

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

[‘作业1’、‘作业3’、‘作业1’、‘作业2’、‘作业1’、‘作业3’、‘作业2’、‘作业3’、‘作业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
我一直在寻找这个方法,但它似乎是一条死胡同。到目前为止,我发现的只是根据索引对整个列表进行排序。

您可以使用keyfunc对其进行排序,该函数返回索引1和转换为int的索引2项


您应该发布您已经尝试过的代码。看起来您可能对使用pandas执行任务感兴趣。我还建议您使用任何方法,在继续之前将所有数字列转换为数字。
>>> 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')
>>>