在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