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

时间:2017-04-17 04:56:14

标签: python

我的代码如下:

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

我尝试根据数组中的第一个值进行排序。输出是:

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

为什么我的函数不对数组数组进行排序?

1 个答案:

答案 0 :(得分:1)

来自Sorting Mini-HOW TO

  

在Py3.0中,cmp参数被完全删除(作为较大的一部分   努力简化和统一语言,消除冲突   丰富的比较和 cmp 方法之间。

     

在Py2.x中,sort允许一个可以调用的可选函数   做比较。该函数应该有两个参数   比较然后返回负值,小于,返回   如果它们相等则为零,或者为大于返回正值。

所以你可以试试这个:

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