【发布时间】:2017-11-15 18:18:24
【问题描述】:
我正在做一个简单的 yaml 加载并遇到了一个小问题:
代码:
with open(target, 'r') as stream:
try:
data = (yaml.load(stream))
except Exception as exc:
print (exc)
print(data)
第一个 yaml 文件:
test:
- foo: 1
- bar: 2
test2:
- foo: 1
- bar: 2
第二个yaml文件:
foo: 1
bar: 2
我只需要测试组中的值,因此当我尝试从第一个 yaml 访问数据时,我使用 print(data['test']) 返回这些值:
[{'foo': '1'}, {'bar': '2'}]
在第二个中,我使用print(data) 行,我得到:
{'foo': '1'}, {'bar': '2'}
我知道有几种方法可以解决这个问题,用空替换括号或使用迭代循环来创建一个新对象,但这看起来真的很复杂。有没有更好的方法可以让我得到我正在寻找的结果,而无需费力地创建更难阅读的代码?
【问题讨论】:
-
我知道有几种方法可以解决这个问题这里有什么问题?
-
数据被格式化为列表,我希望它作为字典而不使用循环来获取该格式。
-
@Merakel 好吧,如果您在 YAML 中有一系列映射,您将在 python 中获得一个字典列表。您必须自己处理数据。或者您可以尝试将
!!omap标签添加到第一个文件的列表中,然后您会得到一个ordereddict
标签: python-3.x yaml