我的代码如下:
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)
在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']]