我有一個包含其他串列的串列。此串列的每個元素包含 5 個元素,如下所示:
requests = [['abc', 'def', '[email protected]', 'GROUP1', '000'],
['ghi', 'jkl', 'ghi,[email protected]', 'GROUP4', '111'],
['mno', 'pqr', '[email protected]', 'GROUP4', '222'],
['stu', 'vxy', '[email protected]', 'GROUP2', '333'],
['123', '456', '[email protected]', 'GROUP4', '444'],
['A12', 'B34', '[email protected]', 'GROUP3', '555']]
我想對這個串列進行排序,這樣每個包含一個等于 GROUP4 的元素的串列都將被放置在串列的末尾。因此,輸出將如下所示:
requests = [['abc', 'def', '[email protected]', 'GROUP1', '000'],
['stu', 'vxy', '[email protected]', 'GROUP2', '333'],
['A12', 'B34', '[email protected]', 'GROUP3', '555'],
['ghi', 'jkl', 'ghi,[email protected]', 'GROUP4', '111'],
['mno', 'pqr', '[email protected]', 'GROUP4', '222'],
['123', '456', '[email protected]', 'GROUP4', '444'],]
我設法根據該特定元素使用以下方法對它們進行排序:
requests.sort(key=lambda x: x[3])
但這只是根據第 4 個元素按字母順序對它們進行排序。如果存在 GROUP5 或 GROUP6,這將不起作用,因為這 2 個將是最后一個元素。
關于如何做到這一點的任何想法?
非常感謝!
uj5u.com熱心網友回復:
您可以更改lambda以檢查最后一個字符'GROUP'是否為 4
requests.sort(key=lambda x: x[3][-1] == '4')
如果您想對串列的其余部分進行排序,也可以tuple在lambda有兩個條件的情況下使用
requests.sort(key=lambda x: (x[3][-1] == '4', x[3]))
uj5u.com熱心網友回復:
通過按布林值排序將索引 [3] 處的 GROUP4 串列移到末尾。
requests.sort(key=lambda el: el[3] == "GROUP4")
uj5u.com熱心網友回復:
您還可以使用串列理解:
firstList = [a for a in requests if a[3] != 'GROUP4']
secondList = [a for a in requests if a[3] == 'GROUP4']
firstList.extend(secondList)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/339861.html
