为什么我的Python比较器不工作?

问题描述:

我的代码如下:为什么我的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

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']]