簡體   English   中英

如何根據條件對壓縮列表進行排序?

[英]How can i sort a zipped list based on conditions?

我正在嘗試根據值對壓縮列表進行排序。 所以列表是這樣的

[('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()

您可以通過使用返回轉換為int index 1index 2項的keyfunc對其進行sort

>>> 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')
>>> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM