在保留顺序的同时将字典转储到 YAML 文件

新手上路,请多包涵

我一直在尝试将字典转储到 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

这可能吗?

原文由 Ben 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
1 个回答

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

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

原文由 Eric 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题