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

如何阻止ruamel.yaml在dump时对字典键排序?(Python3.11/0.17.21)

解决ruamel.yaml dump时键排序问题

ruamel.yaml默认会对字典键按字母排序,即便Python 3.7+的字典本身是有序的,也会被覆盖。要保留原插入顺序,只需关闭排序配置:

方法一:使用YAML实例配置

创建ruamel.yaml.YAML()实例后,设置sort_keys=False即可:

import ruamel.yaml

data = {
    'EMEA': {
        'rating': 5,
        'leads': 100,
        'locs': ['DE', 'FR']
    },
    'APAC': {
        'rating': 4,
        'leads': 150,
        'locs': ['SG', 'JP']
    }
}

# 初始化YAML实例并关闭键排序
yaml = ruamel.yaml.YAML()
yaml.sort_keys = False

# 输出到文件
with open('output.yaml', 'w') as f:
    yaml.dump(data, f)

# 直接打印到控制台
yaml.dump(data, sys.stdout)

方法二:直接调用dump函数传参

如果习惯使用旧的直接调用方式,可在dump()中传入sort_keys=False参数:

import ruamel.yaml
import sys

data = {
    'EMEA': {
        'rating': 5,
        'leads': 100,
        'locs': ['DE', 'FR']
    },
    'APAC': {
        'rating': 4,
        'leads': 150,
        'locs': ['SG', 'JP']
    }
}

ruamel.yaml.dump(data, sys.stdout, sort_keys=False)

两种方法都能让dump输出的键顺序与原字典插入顺序完全一致,顶级键EMEA会保持在APAC之前,二级键rating、leads、locs的顺序也不会被打乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:35:22