2017-04-17 62 views
-2

我的代碼如下:爲什麼我的Python比較器不工作?

data = [["456"], ["123"], ["987", "234"]] 
def comparator(array1, array2): 
    return array1[0] > array2[0] 
data.sort(comparator) 
print data 

我想基於陣列的第一個值進行排序。輸出是:

[['456'], ['123'], ['987', '234']] 

爲什麼我的函數不能排序數組數組?

+0

什麼是數組1和數組2? – Aditya

+0

@ADITYA它們是通過'sort'傳遞給函數的列表中的列表... – Li357

+0

它爲什麼要工作?你期望排序函數是什麼? – abccd

回答

1

Sorting Mini-HOW TO

在Py3.0,該CMP參數被完全去除(作爲更大 努力簡化和統一語言的一部分,從而消除了豐富的比較和CMP方法之間的衝突 )。

在Py2.x中,排序允許一個可選函數,可以調用 進行比較。該函數應該接受兩個參數,即 進行比較,然後返回一個小於負值,如果它們相等則返回 零,或返回大於的正值。

,所以你可以試試這個:

data=[['123'], ['45'], ['987', '234']] 
def comparator(array1, array2): 
    return int(array1[0]) - int(array2[0]) 
data.sort(comparator) 
print data 

或者另一種方式:

>>> data=[['123'], ['45'], ['987', '234']] 
>>> data.sort(key=lambda x: int(x[0])) 
>>> data 
[['45'], ['123'], ['987', '234']] 
相關問題