在保留顺序的同时将字典转储到 YAML 文件 [英] dumping a dictionary to a YAML file while preserving order

查看:37
本文介绍了在保留顺序的同时将字典转储到 YAML 文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I've been trying to dump a dictionary to a YAML file. The problem is that the program that imports the YAML file needs the keywords in a specific order. This order is not alphabetically.

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 文件,其格式如下:

This produces a *.yml file which is formatted like this:

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

但我想要的是保留订单:

But what I want is that the order is preserved:

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

这可能吗?

推荐答案

3 年后 - yaml.dump 有一个默认设置为 True 的 sort_keys kwarg.将其设置为 False 以不重新排序:

3 Years later - yaml.dump has a sort_keys kwarg that is set to True by default. Set it to False to not reorder:

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

这篇关于在保留顺序的同时将字典转储到 YAML 文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆