我试图读取YAML文件并按照文件中的内容打印出我在那里的列表。
所以YAML:
b: ...
a: ...
我的python是:
for key, value in yaml.load(open(input_file)).items():
print(str(key))
输出变为:
a
b
但我需要b
然后a
。我也试过了iteritems()
,我也得到了相同的结果。
答案 0 :(得分:1)
如果您的YAML文件包含:
b: 2
a: 1
然后解析如下:
from ruamel.yaml import YAML
yaml = YAML()
input_file = 'input.yaml'
for key, value in yaml.load(open(input_file)).items():
print(str(key))
将首先打印b
。但是,如果您使用(更快):
yaml = YAML(typ='safe')
这不能保证,因为YAML规范不保证映射键的顺序。
如果您使用的是YAML 1.1和PyYAML,则没有这样的订单保证,但是您首先不应该使用yaml.load()
,因为它不安全。
答案 1 :(得分:0)
yaml.load
只返回dict
,默认情况下是无序的。如果您关心保留订单,则需要使用OrderedDict
,请参阅here以获取如何执行此操作的示例。