相关疑难解决方法(0)

547
推荐指数
6
解决办法
50万
查看次数

如何使用python从字典中编写yaml文件?

我有一个 csv 文件,其中包含标题包含键和单元格包含值的数据。我想使用 python 从 csv 文件的内容创建一个 yaml 文件。

我创建了一个 K:V 对的字典;但是,我一直在尝试将 K:V 对放入 yaml 文件中。

yaml 的结构必须是:

key1: value1
key2: value2
key3:
  -  key4: value4
     key5: {key6: [value6]
key7: value7
key8: value8
key9: value9
  -
  -
---
Run Code Online (Sandbox Code Playgroud)

如果我手动创建这些,我将拥有 1000 多个 YAML,因此非常耗时且不切实际。

我正在寻找您更有经验的人可能有的任何想法。

我真的希望输出遍历字典以创建一个巨大的 YAML 列表,如下所示:

key1: value1
key2: value2
key3:
  -  key4: value4
     key5: {key6: [value6]
key7: value7
key8: value8
key9: value9
  -
  -
---
key1: value1
key2: value2
key3:
  -  key4: value4
     key5: {key6: [value6]
key7: value7
key8: …
Run Code Online (Sandbox Code Playgroud)

python yaml pyyaml python-2.7 python-3.x

5
推荐指数
1
解决办法
6779
查看次数

将 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 ×3

yaml ×3

python-2.7 ×1

python-3.x ×1

pyyaml ×1