You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对字典value按降序排序,值相同时按key的字母顺序排序

字典按值降序、同值按键升序排序方法

Python 3.7及以上版本的内置字典支持保留插入顺序,我们可以通过自定义排序规则直接实现需求:

  • 排序优先级第一规则:按字典值降序排列
  • 排序优先级第二规则:值相同时,按对应键的字母升序排列

实现思路

调用sorted()方法对字典的items()键值对序列排序,将排序关键字设置为元组(-值, 键):

  1. 对值取负数后升序排序,等价于原值的降序效果
  2. 同值场景下直接按键本身升序,对应字母顺序的排序要求

代码示例

输入示例字典:

input_dict = {'robert':13, 'walter':17, 'andrew':16, 'adrian':16, 'simon':15, 'santiago':15}

排序代码:

# 全量排序
sorted_dict = dict(sorted(input_dict.items(), key=lambda x: (-x[1], x[0])))

运行结果:

{'walter': 17, 'adrian': 16, 'andrew': 16, 'santiago': 15, 'simon': 15, 'robert': 13}

如果需要和示例输出一致(过滤掉值为13的robert项),可以在排序前加过滤逻辑:

sorted_dict = dict(sorted(
    (item for item in input_dict.items() if item[1] > 13),
    key=lambda x: (-x[1], x[0])
))

运行结果和要求的示例完全一致:

{'walter':17, 'adrian':16, 'andrew':16, 'santiago':15, 'simon':15}

低版本Python兼容说明

Python 3.6及更早版本的内置字典不保留插入顺序,需要使用collections.OrderedDict构造有序字典:

from collections import OrderedDict
sorted_dict = OrderedDict(sorted(input_dict.items(), key=lambda x: (-x[1], x[0])))

内容的提问来源于stack exchange,提问作者M_92

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:15:04