如何使用Python3的sorted函数实现基于自定义标准的排序?
- 内容介绍
- 文章标签
- 相关推荐
本文共计727个文字,预计阅读时间需要3分钟。
在Python2中,若想自定义评价标准的词,可以使用如下方式:
pythondef cmp(a, b): # 自定义比较逻辑 pass
在 python2 中,如果想要自定义评价标准的话,可以这么做
def cmp(a, b): # 如果逻辑上认为 a < b ,返回 -1 # 如果逻辑上认为 a > b , 返回 1 # 如果逻辑上认为 a == b, 返回 0 pass a = [2,3,1,2] a = sorted(a, cmp)
但是在 python3 中,cmp 这个参数已经被移除了,那么在 python3 中应该怎么实现 python2 的 cmp 功能呢?
import functools def cmp(a, b): if b < a: return -1 if a < b: return 1 return 0 a = [1, 2, 5, 4] print(sorted(a, key=functools.cmp_to_key(cmp)))
上面这个方法实现了降序排列,因为 -1 代表我们逻辑上认为 a<b ,而实际上 b<a 。
本文共计727个文字,预计阅读时间需要3分钟。
在Python2中,若想自定义评价标准的词,可以使用如下方式:
pythondef cmp(a, b): # 自定义比较逻辑 pass
在 python2 中,如果想要自定义评价标准的话,可以这么做
def cmp(a, b): # 如果逻辑上认为 a < b ,返回 -1 # 如果逻辑上认为 a > b , 返回 1 # 如果逻辑上认为 a == b, 返回 0 pass a = [2,3,1,2] a = sorted(a, cmp)
但是在 python3 中,cmp 这个参数已经被移除了,那么在 python3 中应该怎么实现 python2 的 cmp 功能呢?
import functools def cmp(a, b): if b < a: return -1 if a < b: return 1 return 0 a = [1, 2, 5, 4] print(sorted(a, key=functools.cmp_to_key(cmp)))
上面这个方法实现了降序排列,因为 -1 代表我们逻辑上认为 a<b ,而实际上 b<a 。

