信息发布→ 登录 注册 退出

python3字典的排序

发布时间:2026-01-09

点击量:
Python 3.7+ 字典保持插入顺序,排序需用 sorted() 配合 keys()、items() 及 key 函数生成新字典;按键升序为 {k: d[k] for k in sorted(d)},按值升序为 dict(sorted(d.items(), key=lambda x: x[1]))。

Python3 中字典本身是无序的(3.7+ 版本保持插入顺序,但“排序”仍指按键或值重新组织),要实现排序,需借助 sorted() 函数配合字典方法,生成新的有序结构(如列表或新字典)。

按字典的键排序

使用 sorted(d.keys()) 或直接 sorted(d) 获取升序键列表;再通过字典推导式重建有序字典:

  • 升序: {k: d[k] for k in sorted(d)}
  • 降序: {k: d[k] for k in sorted(d, reverse=True)}

按字典的值排序

sorted(d.items(), key=lambda x: x[1]) 对键值对排序(x[1] 表示值);再转为字典:

  • 升序(按值): dict(sorted(d.items(), key=lambda x: x[1]))
  • 降序(按值): dict(sorted(d.items(), key=lambda x: x[1], reverse=True))
  • 注意:若值不可比较(如混有字符串和数字),会报 TypeError

处理复杂排序(多级、自定义规则)

当需要按值长度、绝对值、或多个条件排序时,可扩展 key 函数:

  • 按值的字符串长度排序: sorted(d.items(), key=lambda x: len(str(x[1])))
  • 先按值降序,值相同时按键升序: sorted(d.items(), key=lambda x: (-x[1], x[0]))
  • 对数值取绝对值后排序: sorted(d.items(), key=lambda x: abs(x[1]))

持排序结果为字典(Python 3.7+)

由于 Python 3.7+ 字典默认保持插入顺序,用 dict(...) 包裹排序后的 items() 即可得到“有序字典”:

  • sorted_dict = dict(sorted(d.items(), key=lambda x: x[1]))
  • 不推荐用 collections.OrderedDict(仅兼容旧版本需要)
标签:# python  # 键值对  # red  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!