Python中的自定义排序

时间:2016-08-17 19:22:35

标签: 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:
            return -1
    else:
        return 1

但是有人可以帮我用lambda和comprehensions的sort函数重写它。

2 个答案:

答案 0 :(得分:1)

您可以在排序查看订单时撤消订单。只是不要改变原始列表项。

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

答案 1 :(得分:0)

你应该使用Python的内置sorted()方法,它已经支持lambda比较。

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

如果您想以您所谈论的方式进行排序,那么您的比较功能是错误的。没有返回零的情况,底部return 1应为return -1。还有缩进错误。