我有以下字典:dic = {'s': 3, 'a': 2, 'w': 2, 'y': 2, 'x': 2, 'm': 4, 'd': 5}我需要先按 VALUE 對(duì)元素進(jìn)行排序,如果值重復(fù),然后按 KEY 排序,我會(huì)得到以下輸出:dic = [('d', 5), ('m', 4), ('s', 3), ('a', 2), ('w', 2), ('x', 2), ('y', 2)]我試過(guò)使用這段代碼:sorted(dic.items(), key=lambda x: x[1], reverse=True)但我一直得到相同的輸出(鍵等于 2 的字母不按字母順序排列):[('d', 5), ('m', 4), ('s', 3), ('a', 2), ('w', 2), ('y', 2), ('x', 2)]有誰(shuí)知道我該如何解決這個(gè)問(wèn)題?
3 回答

蕭十郎
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
您可以使用 key 函數(shù)對(duì) dict 項(xiàng)進(jìn)行排序,該函數(shù)返回一個(gè) 2 元組,其中 dict 項(xiàng)的否定值作為第一項(xiàng),鍵作為第二項(xiàng):
sorted(dic.items(), key=lambda t: (-t[1], t[0]))
這將返回:
[('d', 5), ('m', 4), ('s', 3), ('a', 2), ('w', 2), ('x', 2), ('y', 2)]

瀟湘沐
TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊
你快到了,你需要在你的 lambda 排序中包含鍵和值:
sorted(dic.items(), key=lambda x: (-x[1],x[0]))
添加回答
舉報(bào)
0/150
提交
取消