-
慕尼黑8549860
从文档:reverse是一个布尔值。如果设置为True,则对列表元素进行排序,就好像每个比较都被反转一样。因此,您想要的是类似以下内容的东西:d.sort(key=lambda x: (x[0], -x[1]))如果x[1]不是数字,请尝试:d.sort(key=lambda x: x[1], reverse=True)d.sort(key=lambda x: x[0])
-
手掌心
(可能会过大,但是..)使用pandas和args ascending=[True, False]:d = [[1,2], [2,2], [2,3], [2,4], [3,1]]df= pd.DataFrame(d)sorted_values = df.sort_values(by=[0,1], ascending=[True,False])sorted_list = sorted_values.agg(list,1).tolist()[[1, 2], [2, 4], [2, 3], [2, 2], [3, 1]]
-
狐的传说
我的解决方案:from itertools import groupby, chainl = ((1, 'b'), (1, 'd'), (2, 'a'), (1, 'a'))def sort_multi(lst, index_normal, index_reversed): return list(chain.from_iterable([sorted(list(j), key=lambda v:v[index_reversed], reverse=True) for i, j in groupby(sorted(lst), key=lambda v:v[index_normal])]))print(sort_multi(l, 0, 1))输出:[(1, 'd'), (1, 'b'), (1, 'a'), (2, 'a')]