迭代python中的YAML列表

时间:2017-08-02 13:45:16

标签: python yaml items iteritems

我试图读取YAML文件并按照文件中的内容打印出我在那里的列表。

所以YAML:

b: ...
a: ...

我的python是:

for key, value in yaml.load(open(input_file)).items():
    print(str(key))

输出变为:

a
b

但我需要b然后a。我也试过了iteritems(),我也得到了相同的结果。

2 个答案:

答案 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以获取如何执行此操作的示例。