python - 将字典转储到 YAML 文件,同时保留顺序

标签 python dictionary yaml lexicographic-ordering

我一直在尝试将字典转储到 YAML 文件中。问题在于导入 YAML 文件的程序需要按特定顺序排列关键字。此顺序不是按字母顺序排列。

import yaml
import os 

baseFile = 'myfile.dat'
lyml = [{'BaseFile': baseFile}]
lyml.append({'Environment':{'WaterDepth':0.,'WaveDirection':0.,'WaveGamma':0.,'WaveAlpha':0.}})

CaseName = 'OrderedDict.yml'
CaseDir = r'C:\Users\BTO\Documents\Projects\Mooring code testen'
CaseFile = os.path.join(CaseDir, CaseName)
with open(CaseFile, 'w') as f:
    yaml.dump(lyml, f, default_flow_style=False)

这会生成一个 *.yml 文件,其格式如下:

- BaseFile: myfile.dat
- Environment:
    WaterDepth: 0.0
    WaveAlpha: 0.0
    WaveDirection: 0.0
    WaveGamma: 0.0

但我想要的是保留顺序:

- BaseFile: myfile.dat
- Environment:
    WaterDepth: 0.0
    WaveDirection: 0.0
    WaveGamma: 0.0
    WaveAlpha: 0.0

这可能吗?

最佳答案

yaml.dump 有一个 sort_keys 关键字参数,默认设置为 True。将其设置为False以不重新排序:

with open(CaseFile, 'w') as f:
    yaml.dump(lyml, f, default_flow_style=False, sort_keys=False)

关于python - 将字典转储到 YAML 文件,同时保留顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31605131/

相关文章:

haskell - 实现相同功能的不同类型的映射列表?

yaml - YAML 中单个 'n' 字符的特殊意义?

amazon-web-services - 通过 Amazon Web Service CodeDeploy 使用 appspec.yml 设置目录所有者和权限

python - 根据 numpy 数组中的列值获取行号

python - 报告实验室。具有两列的 float 文本

python - 如何在Python中访问字典的第二个元素?

go - 在 Go 中解析动态 YAML 的惯用方式是什么?

python - 实现代理对象

python - 限制 Python VM 内存

python - 如何从 dict 获取值列表?