Python中的自定义排序

Python中的自定义排序,python,lambda,Python,Lambda,我是Python新手,所以问题是 我有以下列表项 [[0, 1], [2,3], [1,2], [4, 5], [3, 5]] 我想先比较每个列表的第二项,然后比较第一项,然后按递增顺序对列表进行排序 这是我的密码 def sorting(a, b): if a[1] > b[1]: return 1 elif a[1] == b[1]: if a[0] > b[0]: return 1 else

我是Python新手,所以问题是

我有以下列表项

[[0, 1], [2,3], [1,2], [4, 5], [3, 5]]
我想先比较每个列表的第二项,然后比较第一项,然后按递增顺序对列表进行排序

这是我的密码

def sorting(a, b):
    if a[1] > b[1]:
        return 1
    elif a[1] == b[1]:
       if a[0] > b[0]:
            return 1
        else:
            return -1
    else:
        return 1

但是,有人能帮我用带有lambda和comprehensions的sorted函数重写它吗。

您应该使用Python的内置方法,它已经支持lambda比较

l = [[0, 1], [2,3], [1,2], [4, 5], [3, 5]]
l = sorted(l, cmp=sorting)

如果你想按照你所说的方式排序,你的比较函数是错误的。没有返回零的情况,底部的
return 1
应该是
return-1
。还有缩进错误。

当排序查看它们时,可以反转顺序。只是不要改变原来的列表项


排序(l,key=lambda x:(x[1],x[0]))

可能重复的你能解释一下你的答案吗,我想根据第二个数字,然后是第一个数字对列表进行排序。这段代码是怎么做到的?@CodeMonkey你试过运行这段代码吗?它使用您在问题中定义的函数对列表进行排序。OAisCircle是通过调用您已经编写的排序函数来进行排序的。我不知道排序是我的职责sorting@CodeMonkey另外请注意,我对我的答案进行了编辑,您的比较功能不适用于您想要实现的目标。