元组比较:
1 >>> (0, 1, 2) < (0, 3, 4) 2 True 3 >>> (0, 1, 2000000) < (0, 3, 4) 4 True
列表的多字段排序:
sorted_list = [ [1, 2, 3, 4, 5, 6, 7, 8], [3, 2, 6, 1, 8, 4, 6, 1], [8, 3, 5, 1, 3, 9, 0, 2], [9, 8, 7, 6, 5, 3, 2, 1] ]
sorted_list = sorted(sorted_list, key = lambda item: (item[1], item[4], item[3]), reverse = True) # result [[9, 8, 7, 6, 5, 3, 2, 1], [8, 3, 5, 1, 3, 9, 0, 2], [3, 2, 6, 1, 8, 4, 6, 1], [1, 2, 3, 4, 5, 6, 7, 8]]
列表-列表的分组操作:
import itertools sorted_list = [ [1, 2, 3, 4, 5, 6, 7, 8], [1, 2, 6, 1, 8, 4, 6, 1], [8, 2, 5, 7, 3, 9, 0, 2], [9, 8, 7, 6, 5, 3, 2, 1] ] sorted_list = sorted([[key, [item for item in items]] for key, items in itertools.groupby(sorted_list, key = lambda item: (item[0], item[1]))], key = lambda item: item[0][0])
# result
[
[ (1, 2), [ [1, 2, 3, 4, 5, 6, 7, 8], [1, 2, 6, 1, 8, 4, 6, 1] ] ], #分组1
[(8, 2), [ [8, 2, 5, 7, 3, 9, 0, 2] ] ], #分组2
[(9, 8), [ [9, 8, 7, 6, 5, 3, 2, 1] ] ] #分组3
]