为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中按值和键排序字典?

在Python中按值和键排序字典?

红颜莎娜 2022-06-02 11:14:36
我有以下字典: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)]


查看完整回答
反对 回复 2022-06-02
?
潇湘沐

TA贡献1816条经验 获得超6个赞

你快到了,你需要在你的 lambda 排序中包含键和值:

sorted(dic.items(), key=lambda x: (-x[1],x[0]))


查看完整回答
反对 回复 2022-06-02
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

使用这个键的定义

key=lambda x: (x[1],x[0])


查看完整回答
反对 回复 2022-06-02
  • 3 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信