Python:在list中移动特定的列表,基于元素,在末尾



我有一个包含其他列表的列表。该列表的每个元素包含5个元素,如下所示:

requests = [['abc', 'def', 'abc.def@email.com', 'GROUP1', '000'],
['ghi', 'jkl', 'ghi,jkl@email.com', 'GROUP4', '111'],
['mno', 'pqr', 'mno.pqr@email.com', 'GROUP4', '222'],
['stu', 'vxy', 'stu.vxy@email.com', 'GROUP2', '333'],
['123', '456', '123.456@email.com', 'GROUP4', '444'],
['A12', 'B34', 'A12.B34f@email.com', 'GROUP3', '555']]

我想排序这个列表,在这样一种方式,每个列表包含一个元素等于GROUP4,将被放置在列表的末尾。因此,输出看起来像这样:

requests = [['abc', 'def', 'abc.def@email.com', 'GROUP1', '000'],
['stu', 'vxy', 'stu.vxy@email.com', 'GROUP2', '333'],
['A12', 'B34', 'A12.B34f@email.com', 'GROUP3', '555'],
['ghi', 'jkl', 'ghi,jkl@email.com', 'GROUP4', '111'],
['mno', 'pqr', 'mno.pqr@email.com', 'GROUP4', '222'],
['123', '456', '123.456@email.com', 'GROUP4', '444'],]

我设法根据特定的元素对它们进行排序:

requests.sort(key=lambda x: x[3])

但是这只是基于第4个元素按字母顺序排序。如果存在GROUP5或GROUP6,这将不起作用,因为这两个将是最后的元素。

有什么好主意吗?

非常感谢!

您可以更改lambda以检查第4项是否为'GROUP4'

requests.sort(key=lambda x: x[3] == 'GROUP4')

如果您想对列表的其余部分进行排序,也使用tuplelambda中有两个项目,它将首先按'GROUP4'排序,然后按字典顺序排序

requests.sort(key=lambda x: (x[3] == 'GROUP4', x[3]))

将索引[3]处GROUP4的列表按布尔值排序移到末尾。

requests.sort(key=lambda el: el[3] == "GROUP4")

最新更新