在Python 2,你可以这样做:
>>> l = [ ['a','b'], ['x','y'], ['a','y'], ['x', 'b'] ]
>>>
>>> sorted(l, lambda (a, b), (c, d): cmp(c, a) or cmp(b, d))
[['x', 'b'], ['x', 'y'], ['a', 'b'], ['a', 'y']]
在Python 3同样的事情是可能的,但丑:
>>> import functools
>>> sorted(l, key=functools.cmp_to_key(lambda a, b: (a[0] < b[0]) - (a[0] > b[0]) or (a[1] > b[1]) - (a[1] < b[1])))
[['x', 'b'], ['x', 'y'], ['a', 'b'], ['a', 'y']]
或者与助手:
>>> def cmp(a, b):
return (a > b) - (a < b)
>>> sorted(l, key=functools.cmp_to_key(lambda a, b: cmp(b[0], a[0]) or cmp(a[1], b[1])))
[['x', 'b'], ['x', 'y'], ['a', 'b'], ['a', 'y']]
的Javastic的方法是创建一个自定义的“Comparator”来实现您想要的自定义排序规则......然后传递自定义ru到Arrays.sort()方法。在Java 8中,这可以通过lambda,匿名类实例或具体类实例来完成。 Python会有类似的东西。 – scottb