python-3.x - 加载 yaml 列表作为字典

标签 python-3.x yaml

我正在做一个简单的 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'}

我知道有几种方法可以解决这个问题,将括号替换为空或使用迭代循环创建一个新对象,但这看起来真的很复杂。有没有更好的方法来获得我正在寻找的结果,而无需跳过障碍并创建更难阅读的代码?

最佳答案

还有一个办法。基于 yaml 文件语法。在您的 yaml 文件中改用此格式。

test:
  foo: 1
  bar: 2
test2:
  - foo: 1
  - bar: 2

有了这个,你可以调用你的 foo 测试字典。

>>>print(data[test][foo])
1

这是因为 yaml 将“-”读取为列表元素,而没有“-”的元素将读取为字典元素。

关于python-3.x - 加载 yaml 列表作为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47314588/

相关文章:

python-3.x - aiohttp异步请求的任务异常

rest - 如何使用 EMS 文档属性创建 YAML 文档

yaml - 最后如何应用SilverStripe扩展?

php - Yaml:变量的默认值

ruby-on-rails - Rails 3 - 'Couldn' t 解析 Yaml'

python - shebang 无法在 WSL(Windows 子系统 Linux)上工作

python-3.x - 为什么安装成功后无法导入pandas?

python - 使用正则表达式解析财务报表

python - 在 Python 3.7+ 中更改 dict 中的键顺序

java - SpringBootApplication 无法从 application.yml 文件加载属性