[英]Convert sort from Python2 to Python3
我已經在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]))
有什么建議嗎?
最好的祝福,
官方python 3文檔在本節中說明了將其從python 2轉換為3的正確方法。
原始的cmp
函數只是執行以下操作
def cmp(x, y):
if x == y:
return 0
elif x > y:
return 1
else:
return -1
也就是說,它等效於sign(xy)
,但也支持字符串和其他數據類型。
但是,您的問題是當前的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])
))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.