2 回答

TA贡献1824条经验 获得超5个赞
您可以使用sorted以下内容key:
l = ['mix', 'xyz', 'apple', 'xanadu']
sorted(l, key=lambda x: (x[0]!='x', x))
# ['xanadu', 'xyz', 'apple', 'mix']
或@deepspace 建议使用str.startswith:
sorted(l, key=lambda s: (not s.startswith('x'), s))
上面的键是基于元组对字符串进行排序,由表达式产生的布尔值x[0]!='x'和字符串本身组成:
[(x[0]!='x', x) for x in l]
# [(True, 'mix'), (False, 'xyz'), (True, 'apple'), (False, 'xanadu')]
因此,排序的第一个标准是字符串是否以x(记住FalseandTrue被评估为0and 1)开头,然后是字符串本身是否按字母数字排序。

TA贡献1859条经验 获得超6个赞
如果您想生成另一个列表,可以使用 sorted 内置函数,但如果您不介意只更改当前列表,请使用方法list.sort:
>>> l = ['mix', 'xyz', 'apple', 'xanadu']
>>> l.sort(key=lambda s: (not s.startswith('x'), s))
>>> l
['xanadu', 'xyz', 'apple', 'mix']
添加回答
举报