3 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
從文檔:
reverse是一個(gè)布爾值。如果設(shè)置為True,則對(duì)列表元素進(jìn)行排序,就好像每個(gè)比較都被反轉(zhuǎn)一樣。
因此,您想要的是類似以下內(nèi)容的東西:
d.sort(key=lambda x: (x[0], -x[1]))
如果x[1]不是數(shù)字,請(qǐng)嘗試:
d.sort(key=lambda x: x[1], reverse=True)
d.sort(key=lambda x: x[0])

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
(可能會(huì)過(guò)大,但是..)使用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]]

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊
我的解決方案:
from itertools import groupby, chain
l = ((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')]
添加回答
舉報(bào)