在 yaml.dump 输出中使有序的字典表现得像普通的字典
Make ordered dicts behave like normal dicts in yaml.dump output
当用 yaml.dump()
序列化一个 OrderedDict
时,由于有很多破折号,输出很难理解:
refine: !!python/object/apply:collections.OrderedDict
- - - root
- Wuhan/Hu-1/2019
- - clock_rate
- 0.0007
- - clock_std_dev
- 0.0003
有没有办法让 yaml.dump()
像正常的 Dict
一样序列化 OrderedDict
?我想要的是更具可读性:
refine:
root: Wuhan/Hu-1/2019
clock_rate: 0.0007
clock_std_dev: 0.0003
我是否需要遍历整个变量(它由数百个字典组成,以上只是摘录)并将所有 OrderedDict
转换为 Dict
还是有一个 in - yaml.dump()
的内置功能或为我执行此操作的类似库?
使用 ruamel.yaml
代替 PyYAML
立即解决了问题。 OrderedDict
在输出中不再表示为列表。
此代码:
import ruamel.yaml
yaml=ruamel.yaml.YAML()
yaml.dump()
产生更整洁的输出:
refine: !!omap
- root: Wuhan/Hu-1/2019
- clock_rate: 0.0007
- clock_std_dev: 0.0003
当用 yaml.dump()
序列化一个 OrderedDict
时,由于有很多破折号,输出很难理解:
refine: !!python/object/apply:collections.OrderedDict
- - - root
- Wuhan/Hu-1/2019
- - clock_rate
- 0.0007
- - clock_std_dev
- 0.0003
有没有办法让 yaml.dump()
像正常的 Dict
一样序列化 OrderedDict
?我想要的是更具可读性:
refine:
root: Wuhan/Hu-1/2019
clock_rate: 0.0007
clock_std_dev: 0.0003
我是否需要遍历整个变量(它由数百个字典组成,以上只是摘录)并将所有 OrderedDict
转换为 Dict
还是有一个 in - yaml.dump()
的内置功能或为我执行此操作的类似库?
使用 ruamel.yaml
代替 PyYAML
立即解决了问题。 OrderedDict
在输出中不再表示为列表。
此代码:
import ruamel.yaml
yaml=ruamel.yaml.YAML()
yaml.dump()
产生更整洁的输出:
refine: !!omap
- root: Wuhan/Hu-1/2019
- clock_rate: 0.0007
- clock_std_dev: 0.0003