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

Python中如何将嵌套字典通过快速排序转换为OrderedDict?

对嵌套字典按指定字段排序并转换为OrderedDict的方法

嘿,这个需求其实很容易实现,核心就是先对原字典的键值对按规则排序,再转换成OrderedDict就行。我给你一步步拆解:

步骤1:导入必要的模块

首先要导入collections里的OrderedDict,如果是Python 3.7及以上版本,其实普通字典已经默认保留插入顺序了,但如果需要兼容旧版本或者用到OrderedDict的特殊方法,还是得导入它:

from collections import OrderedDict

步骤2:准备原字典

你的示例原字典可以这么定义:

original_dict = {
    'susan': {'number': '5', 'fav_color': 'yellow'},
    'josh': {'number': '1', 'fav_color': 'blue'},
    'casey': {'number': '11', 'fav_color': 'orange'}
}

步骤3:按指定字段排序

这里的关键是用sorted()函数,指定排序的依据是子字典里的number字段。注意!你的number是字符串类型,如果直接按字符串排序,'11'会排在'5'前面(因为字符串比较是按字符顺序),所以必须把它转成整数再排序:

# 排序原字典的键值对,lambda表达式提取子字典的number并转成整数作为排序key
sorted_items = sorted(original_dict.items(), key=lambda item: int(item[1]['number']))

步骤4:转换为OrderedDict

把排序后的键值对列表传入OrderedDict的构造函数就搞定了:

ordered_dict = OrderedDict(sorted_items)

验证结果

打印一下看看是不是你想要的顺序:

print(ordered_dict)

输出结果:

OrderedDict([('josh', {'number': '1', 'fav_color': 'blue'}), ('susan', {'number': '5', 'fav_color': 'yellow'}), ('casey', {'number': '11', 'fav_color': 'orange'})])

额外说明

  • 如果你的number字段本身就是整数类型,那排序时就不用转成int了,直接用lambda item: item[1]['number']就行。
  • 如果你不需要兼容Python 3.6及以下版本,其实直接用dict(sorted_items)就能得到有序的普通字典,因为3.7+的Python字典已经默认维护插入顺序了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:28:54