基于 YAML 数据的条件 Python for 循环

Conditional Python for loop based on YAML data

我是 Python 的新手,所以请多多包涵。我想弄清楚如何循环访问 YAML 文件中的一组值。使用 PyYAML 解析该文件,然后需要将其送入循环。例如,这里有一些 YAML:

dohicky.yml

---
#Example file
dohicky:
  "1":
    Stuff:
      - Data
      - Data
    Morestuff:
      - Data
      - Data
  "2":
    Stuff:
      - Data
      - Data
    Morestuff:
      - Data
      - Data
  "n":
    - Etc

首先,我正在提取 YAML 的内容。

import yaml
f = open('dohicky.yml')
dohicky = yaml.safe_load(f)
f.close()

现在我只需要一个 for 循环或一个 while 循环来遍历 "dohicky" 下的每个编号 "id"。

for x in xrange(1, 2):

很明显这可以工作,但只为 2 个元素静态定义。不确定如何,例如:

"do while" id = dohicky["dohicky"]["x"] is true. #Not code, just concept!

我立即 运行 遇到的另一个问题是如何在此循环内创建一个对象。例如:

id(x) = dohicky(Pass other info from YAML to class) #Not code, just concept!

不幸的是,我对 Python 还不够熟悉(使用 PyYAML),无法理解语法。非常感谢任何帮助!

* 更新 * 这有点像 sudo 代码,但你至少应该明白我想做什么。

import yaml
f = open('dohicky.yml')
dohicky = yaml.safe_load(f)
f.close()

for x in dohicky["dohicky"]["x"]
        test = dohicky["dohicky"]["1"]["Stuff"]
        print test

在这个测试中,我只是打印 "Stuff" 的输出,但实际上,我需要使用该数据创建一个对象。

您可以使用以下代码遍历 "dohicky" 下的每个编号 "id":

for dohicky_id in dohicky['dohicky']:
    stuff = dohicky['dohicky'][dohicky_id]['Stuff']

在这种情况下,内容是数据字典列表。如果出于某种原因你不能使用字典,并且你想将数据字典转换为对象,你可以通过查看以下问题来完成:Convert Python dict to object?