如何迭代YAML文件以提供PYTHON中不同列表中项目的所有可能组合

如何迭代YAML文件以提供PYTHON中不同列表中项目的所有可能组合,python,yaml,combinations,pyyaml,parser-combinators,Python,Yaml,Combinations,Pyyaml,Parser Combinators,我有一个YAML文档,序列如下 --- One: - a - b - c Two: - d - e Three: - f - g - h - i 我需要从每个列表中获取所有可能的元素组合,一次一个,在列表中的每个实例中仅获取一个元素,并且必须使用所有列表 我需要做的是python 到目前为止,我可以使用以下方式打印YAML文件: #!/usr/bin/env python import yaml with open("parameters.yaml", 'r') as

我有一个YAML文档,序列如下

---
One: 
 - a
 - b
 - c
Two:
 - d
 - e
Three:
 - f
 - g
 - h 
 - i
我需要从每个列表中获取所有可能的元素组合,一次一个,在列表中的每个实例中仅获取一个元素,并且必须使用所有列表

我需要做的是python

到目前为止,我可以使用以下方式打印YAML文件:

#!/usr/bin/env python

import yaml

with open("parameters.yaml", 'r') as stream:
    try:
        print(yaml.load(stream))
    except yaml.YAMLError as exc:
        print(exc)

使用itertools的解决方案:

import itertools
import yaml

with open('parameters.yaml', 'r') as stream:
    try:
        inputdict = yaml.safe_load(stream)
    except yaml.YAMLError as exc:
        print(exc)

total_list = [inputdict[key] for key in inputdict]
combinations = list(itertools.product(*total_list))
print(combinations)
输出:

[('a', 'd', 'f'), ('a', 'd', 'g'), ('a', 'd', 'h'), ('a', 'd', 'i'), ('a', 'e', 'f'), ('a', 'e', 'g'), ('a', 'e', 'h'), ('a', 'e', 'i'), ('b', 'd', 'f'), ('b', 'd', 'g'), ('b', 'd', 'h'), ('b', 'd', 'i'), ('b', 'e', 'f'), ('b', 'e', 'g'), ('b', 'e', 'h'), ('b', 'e', 'i'), ('c', 'd', 'f'), ('c', 'd', 'g'), ('c', 'd', 'h'), ('c', 'd', 'i'), ('c', 'e', 'f'), ('c', 'e', 'g'), ('c', 'e', 'h'), ('c', 'e', 'i')]

这与YAML无关,从YAML加载映射和序列后,您将列表作为dict的值,这就是Python。您永远不应该使用已记录的不安全PyYAML
load()
,您没有理由不使用
safe\u load()
@Anthon您能告诉我一个资源,在那里正确读取yaml,以及如何在读取yaml后循环值吗?唯一真正的文档(除了源代码)是。在那里搜索“不安全”可能的副本,如果我希望输出为(一:'a',二:'d',三:'f'),…等等。