今天做力扣T937.重新排列日志文件,看见官解的sort使用key关键字很神奇,故记下来当做笔记。
力扣题目
key关键字自定义函数,根据自定义函数的返回值进行排序。
举列:
将ls[5,‘a’,8,‘z’,‘e’,0,7,‘m’]排序,排序规则所有数字在字母前,数字间按大小排序,子母间相对位置不变。
注:python sort函数的排序是稳定的
#构建排序函数
f = lambda x: (0,x) if type(x)==type(0) else (1,)
上述函数意为当x的类型是数字型时,返回(0,x),否则则返回(1,)。
python中对元组比大小时先比较第一个元素,若相同则向后继续比较。故以自定义函数f进行排序时,先比较返回的第一个元素(0或1),将所有数字元素前置,字母元素后置。如果是数字元素再按返回元组第二个元素排序,进行数字键排序;若为字母,由于排序稳定,相对位置不变。
ls = ls.sort(key=f)