您可以使用
sorted以下内容
key:
sorted(l, key = lambda s: (s!='p', s=='q', s))['p', 'p', 'a', 'b', 'c', 'd', 'f', 'g', 'n', 't', 'z', 'q', 'q']
说明
为了更好地了解它是如何工作的,下面的列表理解旨在在进行比较之前复制从自
lambda变量中定义的函数返回的内容
key:
t = [(s!='p', s=='q', s) for s in pl]print(t)[(True, False, 'f'), (True, False, 'g'), (False, False, 'p'), (True, False, 'a'), (False, False, 'p'), (True, False, 'c'), (True, False, 'b'), (True, True, 'q'), (True, False, 'z'), (True, False, 'n'), (True, False, 'd'), (True, False, 't'), (True, True, 'q')]
然后,这将
key用于对列表中的项目进行排序,如文档中所述:
key参数的值应该是一个采用单个参数并返回用于排序目的键的函数。
因此考虑到
False = 0and
True = 1,当对这个元组列表进行排序时,结果将是以下内容:
sorted(t)[(False, False, 'p'), (False, False, 'p'), (True, False, 'a'), (True, False, 'b'), (True, False, 'c'), (True, False, 'd'), (True, False, 'f'), (True, False, 'g'), (True, False, 'n'), (True, False, 't'), (True, False, 'z'), (True, True, 'q'), (True, True, 'q')]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)