Python3中排序的cmp函数的替代方法
在python3中的
函数取消了对1
sort
函数的支持。在大多数场景下,使用1
cmp
确实是更好的方法,但是如果我们有逻辑不方便用1
key
表示呢?
比如以下的例子:1
key
像这样复杂的逻辑不太容易转成
函数,或者我们不想改变已有使用1
key
的代码,该怎么办呢?我们可以自己写一个函数,把1
cmp
函数转换成1
cmp
函数。1
key
我们在key函数中返回一个
对象,这个对象保存了1
KeyWrapper
函数和实际要比较的值的引用,然后改写1
cmp
的1
KeyWrapper
比较函数,使用1
__lt__
函数
进行大小比较即可。1
cmp
事实上
已经为我们想到了这一点,我们只需要用1
python3
函数就可以了。1
functools.cmp_to_key