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

如何一次性递归排序Python字典所有层级的键及嵌套子键?

Python2.7 字典全层级键排序方案

你可以通过递归函数结合OrderedDict实现全层级的键排序,同时支持嵌套列表的元素排序,完全适配Python2.7版本的使用需求。

实现代码

首先导入依赖模块:

from collections import OrderedDict

递归排序函数如下:

def sort_nested_structure(obj):
    # 处理字典类型:按key排序后递归处理值
    if isinstance(obj, dict):
        sorted_dict = OrderedDict()
        for key in sorted(obj.keys()):
            sorted_dict[key] = sort_nested_structure(obj[key])
        return sorted_dict
    # 处理列表类型:递归处理每一项后排序元素
    elif isinstance(obj, list):
        processed_list = [sort_nested_structure(item) for item in obj]
        # 若不需要排序列表元素,可删除下一行
        processed_list.sort()
        return processed_list
    # 基础类型直接返回
    else:
        return obj

使用示例

# 输入你的原始字典
dict_1 = { 
    "key9":"value9",
    "key5":"value5",
    "key3":{
        "key3_1":"value3_1",
        "key3_3":"value3_3",
    },
    "key4":"value4",
    "key2":"value2",
    "key8":{
        "key8_1":"value8_1",
        "key8_5":[                              
            "value8_5_3",
            "value8_5_1",
        ],
        "key8_2":"value8_2",
    },
    "key1":"value1",
}

# 执行排序
sorted_dict = sort_nested_structure(dict_1)

结果验证

返回的sorted_dict是OrderedDict类型,会严格保留排序后的键顺序,你可以通过遍历键或者序列化打印查看效果:

import json
print json.dumps(sorted_dict, indent=4)

输出结果与你提供的预期结构完全一致。

自定义调整说明

  • 若不需要对列表中的元素排序,删除processed_list.sort()这一行即可
  • 若需要自定义排序规则,可修改sorted(obj.keys(), key=你的自定义排序函数)、processed_list.sort(key=你的自定义排序函数)中的key参数
  • 原始字典如果存在重复键,Python原生字典会自动保留最后一次赋值的键值对,属于正常特性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:15:03