【发布时间】:2021-12-13 12:57:41
【问题描述】:
我有一个包含其他列表的列表。此列表的每个元素包含 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 存在,这将不起作用,因为这 2 将是最后一个元素。
关于如何做到这一点的任何想法?
非常感谢!
【问题讨论】:
-
试试这个简单的改变 -
requests.sort(key=lambda x: x[3] == "GROUP4")当第三项是GROUP4时使用True的技巧