我有以下字典:dic = {'s': 3, 'a': 2, 'w': 2, 'y': 2, 'x': 2, 'm': 4, 'd': 5}我需要先按 VALUE 对元素进行排序,如果值重复,然后按 KEY 排序,我会得到以下输出:dic = [('d', 5), ('m', 4), ('s', 3), ('a', 2), ('w', 2), ('x', 2), ('y', 2)]我试过使用这段代码: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)]有谁知道我该如何解决这个问题?
3 回答
萧十郎
TA贡献1815条经验 获得超13个赞
您可以使用 key 函数对 dict 项进行排序,该函数返回一个 2 元组,其中 dict 项的否定值作为第一项,键作为第二项:
sorted(dic.items(), key=lambda t: (-t[1], t[0]))
这将返回:
[('d', 5), ('m', 4), ('s', 3), ('a', 2), ('w', 2), ('x', 2), ('y', 2)]
添加回答
举报
0/150
提交
取消