为什么我的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']]
为什么我的函数不能排序数组数组?
答
在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']]
什么是数组1和数组2? – Aditya
@ADITYA它们是通过'sort'传递给函数的列表中的列表... – Li357
它为什么要工作?你期望排序函数是什么? – abccd