1 python sorting cmp python-3.x
我已经用Python2编写了一个排序,我试图将其转换为Python3,它要求提供一个密钥并表示没有更多的cmp函数可用:
test.sort(lambda x, y: cmp(x[2],y[2]) or cmp(x[4], y[4]) or cmp(y[9], x[9]))
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
此致,
官方 python 3 文档在本节中解释了将其从 python 2 转换为 3 的正确方法。
原来的cmp函数只是做了类似的事情
def cmp(x, y):
if x == y:
return 0
elif x > y:
return 1
else:
return -1
Run Code Online (Sandbox Code Playgroud)
也就是说,它相当于sign(x-y),但也支持字符串和其他数据类型。
但是,您的问题是当前函数sort不能与具有两个参数的比较函数一起使用,而是与key一个参数的单个函数一起使用。Python 提供了functools.cmp_to_key帮助你转换它,所以,做类似的事情
test.sort(key = functools.cmp_to_key(
lambda x, y: cmp(x[2],y[2]) or cmp(x[4], y[4]) or cmp(y[9], x[9])
))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1562 次 |
| 最近记录: |