Python 2 中支持类似 c++ 中 cmp 的写法
Python 3 放弃了这一用法
官方说明:https://docs.python.org/3/howto/sorting.html#sortinghowto
所以不想写lambda的话,加一句cmp_to_key()就行了
def 比较函数():
...
return ...
原来的方式是:
.sorted(cmp=比较函数)
现在的方式是:
from functools import cmp_to_key
.sorted(key=cmp_to_key(比较函数))
举例:
对字符串排序,要求把开头为'x'的排到前面,然后再以字典序排。
from functools import cmp_to_key
def cmpp(s1,s2):
if s1[0] == 'x' and s2[0] != 'x':
return 1
if s2[0] == 'x' and s1[0] != 'x':
return -1
if s1 > s2:
return -1
if s1 < s2:
return 1
return 0
def front_x(words):
t = sorted(words,key=cmp_to_key(cmpp),reverse=1)
return t
print(front_x(['mix','xyz','apple','xanadu','aardvark']))
#输出:['xanadu', 'xyz', 'aardvark', 'apple', 'mix']