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

如何对Python字典按值排序,值相同时按键的字母顺序排序?

Python字典按值排序,值相同时按键字母序排序

问题描述

现有Python字典:

my_dictionary = {'a': 1, 'b': 3, 'f': 2, 'k': 2, 'l': 2, 'p': 2, 'g': 1}

需要按值降序排序,当值相同时,按键的字母升序排序,最终得到目标字典:

i_want = {'b': 3, 'f': 2, 'k': 2, 'l': 2, 'p': 2, 'a': 1, 'g': 1}

解决方案

Python 3.7及以上版本的字典会保留插入顺序,因此我们可以先对字典的键值对进行排序,再重新构建字典。

核心逻辑

  • 排序优先级1:按值降序排列
  • 排序优先级2:值相同时,按键的字母升序排列

代码实现

my_dictionary = {'a': 1, 'b': 3, 'f': 2, 'k': 2, 'l': 2, 'p': 2, 'g': 1}

# 对键值对列表排序:先按值降序,值相同则按键升序
sorted_pairs = sorted(my_dictionary.items(), key=lambda item: (-item[1], item[0]))

# 转换为有序字典(Python3.7+直接用dict即可)
i_want = dict(sorted_pairs)
print(i_want)
# 输出结果:{'b': 3, 'f': 2, 'k': 2, 'l': 2, 'p': 2, 'a': 1, 'g': 1}

代码说明

  • sorted()函数的key参数使用lambda表达式:-item[1]通过取负值实现值的降序排序;item[0]作为次要排序条件,实现键的字母升序排序
  • Python 3.7之前的版本可以使用collections.OrderedDict来保存排序后的顺序,替换最后一步的dict()为OrderedDict()即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:15:34