1

我正在使用 pyyaml,我正在加载一个 file.yml

stream = open("file.yml", "r")
results = yaml.load_all(stream)

results 现在包含一个生成器对象。

然后,我正在尝试处理这个:

for key, value in results:
    print(key, "->", value)

如果我的 file.yml 中有多个“yaml 元素”,这可以正常工作。例子:

富:酒吧

你好世界

但是,如果我的 file.yml 中只有一个“yaml 元素”,这是行不通的。例子:

富:酒吧

错误是:ValueError: need more than 1 value to unpack

我正在使用 python 3

我该如何解决这个问题?file.yml 可以包含 1 个或多个元素。

4

2 回答 2

2

results是一个字典列表,因此您不想迭代它,而是要迭代字典:

for dictionary in results:
    for key, value in dictionary.items():
        print(key, "->", value)

因此,您试图将键分配给一个字典,将值分配给另一个字典,因为您是从列表中解包而不是从字典中解包。dict.items()返回一个元组列表,其中键位于第一个位置,值位于元组的另一个位置。

于 2013-09-21T11:33:10.857 回答
1
results = yaml.load_all(stream)
for doc in results:
    for k, v in doc.items():
        print(k, "->", v)
于 2013-09-21T11:34:51.280 回答