Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何对yaml文件进行排序并为每个树提供值_Python_Python 3.x_Yaml_Pyyaml - Fatal编程技术网

Python 如何对yaml文件进行排序并为每个树提供值

Python 如何对yaml文件进行排序并为每个树提供值,python,python-3.x,yaml,pyyaml,Python,Python 3.x,Yaml,Pyyaml,我正在编写一个脚本来读取YAML配置,在for循环和字典的逻辑方面遇到了一些问题。我可以让它在静态完成时打印每个值,但这会使我的脚本失去作用。因为我想使用YAML配置文件动态调用函数 到目前为止,我只能从for脚本中获取第一个键和值。任何时候我尝试使用dataMap[key][0][value]进行进一步操作时,我都无法再继续操作1 导入yaml 将open('design.yaml')作为f: 数据映射=yaml.安全荷载(f) 打印(“============================

我正在编写一个脚本来读取YAML配置,在for循环和字典的逻辑方面遇到了一些问题。我可以让它在静态完成时打印每个值,但这会使我的脚本失去作用。因为我想使用YAML配置文件动态调用函数

到目前为止,我只能从for脚本中获取第一个键和值。任何时候我尝试使用dataMap[key][0][value]进行进一步操作时,我都无法再继续操作1

导入yaml
将open('design.yaml')作为f:
数据映射=yaml.安全荷载(f)
打印(“====================================================”)
打印(“地形图1”)
打印(“====================================================”)
打印(f“拓扑名称:{dataMap['topology'][0]['Name']}”)
打印(f“vPort:{dataMap['topology'][0]['vPort']}”)
打印(f“DG名称:{dataMap['topology'][1]['devicegroup']}”)
打印(f“乘数:{dataMap['topology'][1]['Multiplier']}”)
打印(f“Eth名称:{dataMap['topology'][1]['Eth']['Name']}”)
打印(“自动输出-如上所示”)
打印(“====================================================”)
对于键,dataMap.items()中的值:
#更新
打印(“键:{}-值:{}”。格式(键,值[0]。项())
打印(“=”)
打印(“====================================================”)
#打印(“递归函数测试”)
#打印(“====================================================”)
#myprint(数据地图)
我现在的问题是,如何从YAML文件中提取devicegroup信息?将值[0]更改为值[1]会导致索引问题

print("KEY: {} - VALUE: {}".format(key, value[1].items()))
IndexError: list index out of range

那么,我该如何使用此函数进一步深入YAML文件呢?

我不是100%确定,但我认为不会对f字符串中的函数调用求值,所以请尝试:

    print("KEY: {} - VALUE: {}".format(key, value[0].items()))
相反

此外,
配置的值是一个序列(即作为Python列表加载),它只有一个元素,因此您不能在该序列中进一步索引
0

您最好尝试执行以下操作:

for key, values in dataMap.items():
    for idx, value in enumerate(values):
        print("KEY: {} - VALUE[{}]: {}".format(key, idx, value.items()))
        print("====")

非常感谢。它很管用,但不完全是我想要的。。更新了我上面的帖子,显示了新的输出。“上面”只起介词或副词的作用,两者都不能取限定词“my”。“下文”和定冠词“The”也是如此。因此,请使用“我的帖子上面”分别。“下面的建议”。这正是我想要的!谢谢你的帮助。请制作一个复制你的问题的最小代码示例,并确保你的文章格式正确。
    print("KEY: {} - VALUE: {}".format(key, value[0].items()))
for key, values in dataMap.items():
    for idx, value in enumerate(values):
        print("KEY: {} - VALUE[{}]: {}".format(key, idx, value.items()))
        print("====")