小编spe*_*eps的帖子

将 YAML 加载为嵌套对象而不是 Python 中的字典

我在 YAML 中有一个配置文件,当前使用 yaml.safe_load 作为字典加载。为了方便编写我的代码,我更愿意将它作为一组嵌套对象加载。引用字典的更深层次很麻烦,并且使代码更难阅读。

例子:

import yaml
mydict = yaml.safe_load("""
a: 1
b:
- q: "foo"
  r: 99
  s: 98
- x: "bar"
  y: 97
  z: 96
c:
  d: 7
  e: 8
  f: [9,10,11]
""")
Run Code Online (Sandbox Code Playgroud)

目前,我访问诸如

mydict["b"][0]["r"]
>>> 99
Run Code Online (Sandbox Code Playgroud)

我希望能够做的是访问相同的信息,如

mydict.b[0].r
>>> 99
Run Code Online (Sandbox Code Playgroud)

有没有办法像这样将 YAML 加载为嵌套对象?或者我是否必须滚动自己的类并递归地将这些字典翻转为嵌套对象?我猜namedtuple可以让这更容易一些,但我更喜欢整个事情的现成解决方案。

python yaml

3
推荐指数
2
解决办法
5932
查看次数

标签 统计

python ×1

yaml ×1