You need to enable JavaScript to run this app. Python对值为整数的字典排序时等值项的排序规则疑问
优惠活动
大模型
产品
解决方案
定价
更多

Python对值为整数的字典排序时等值项的排序规则疑问

解答

首先你当前使用的sorted(my_dict.values(), reverse=True)写法,仅提取了字典的所有值参与排序,完全没有携带键的信息,所以不存在值相等时按键的字母顺序排序的逻辑。

关于你当前写法的排序规则:

  • 你传入sorted函数的参数是纯数值的可迭代对象,排序仅会基于数值本身的大小判断。
  • Python的sorted是稳定排序算法,值相等的元素会保留它们在传入可迭代对象中的相对顺序:
    • Python 3.7及以上版本中,字典默认保留插入顺序,my_dict.values()返回值的顺序和键值对插入顺序一致,所以相等值的相对顺序和插入顺序一致。
    • Python 3.6及更早版本中,字典的插入顺序不被官方保证,所以相等值的相对顺序也无法预判。

如果你需要实现「值倒序排序,值相等时按键的字母序排序」的效果,需要同时将键值对传入sorted,通过key参数指定排序规则,示例代码如下:

my_dict = {"cat":20, "dog":23, "apple":20, "rabbit":52}
# 排序规则:优先按值倒序,值相等则按键的字母正序
dict_sorted_items = sorted(my_dict.items(), key=lambda x: (-x[1], x[0]))
# 转换为字典(Python3.7+可直接用dict,低版本需用collections.OrderedDict)
sorted_dict = dict(dict_sorted_items)

上述代码运行后得到的sorted_dict结果为{'rabbit': 52, 'dog': 23, 'apple': 20, 'cat': 20},符合值相等时按键字母序排序的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 10:57:01