元组比较:

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

]

 

posted on 2015-05-11 15:49  闪电战  阅读(146)  评论(0编辑  收藏  举报