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