簡體   English   中英

將排序從Python2轉換為Python3

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM