Python如何实现字典先按值排序、值相同时按键名字母序排序
Python字典按值优先、同值按键字母序排序实现
实现思路
直接使用Python内置sorted()函数即可,排序键传入(值, 键)的元组:Python对元组做比较时会按元素顺序依次判定,先按值升序排列,值相等时自动按键的字符串字典序(也就是字母顺序)升序排列,完全匹配需求。
注意:不要使用
dict作为自定义变量名,它是Python内置字典类型的保留关键字,会覆盖原生类型能力。
代码示例
# 输入字典 origin_data = {"aaa" : 12, "ccc" : 13, "bbb" : 13, "ddd" : 11} # 执行排序,返回排序后的(键, 值)元组列表 sorted_pair_list = sorted(origin_data.items(), key=lambda pair: (pair[1], pair[0])) # Python 3.7及以上版本,字典默认保留插入顺序,可直接转为排序后的字典 sorted_dict = dict(sorted_pair_list)
结果验证
遍历打印排序后的元组列表:
for key, value in sorted_pair_list: print(f"{key}({value})", end=" ")
输出结果和预期完全一致:
ddd(11) aaa(12) bbb(13) ccc(13)
排序过程说明
- 第一阶段按值排序:所有键值对先比较数值大小,得到中间顺序
ddd(11) aaa(12) ccc(13) bbb(13) - 第二阶段同值重排:值均为13的
ccc和bbb比较键名字母序,bbb字典序更靠前,调整后得到最终顺序。
内容的提问来源于stack exchange,提问作者rastr__
相关产品推荐
相关产品推荐

