解析数组并在yaml python3中获取给定的子元素

时间:2017-12-15 19:44:44

标签: python-3.x

我的yaml如下

environments:
  qa:
    east:
      appname:testapp
    west:
      appname:testapp2
  prod:
    east:
      appname:testapp
    west:
      appname:testapp2

我想迭代环境并为agiven环境价值选择密钥。

例如: 环境= 'QA' 区域= '东'

现在我想迭代环境并选择qa&下的appname东方值

1 个答案:

答案 0 :(得分:1)

你的意思是这样的? (注意,您需要在appname:之后放置一个空格,否则yaml解析器将appname:testapp作为字符串,而不是键/值对)

import yaml

config_yaml = """environments:
  qa:
    east:
      appname: testapp
    west:
      appname: testapp2
  prod:
    east:
      appname: testapp
    west:
      appname: testapp2"""

config = yaml.load(config_yaml)

def appname(env, area):
    return config['environments'][env][area]['appname']

if __name__ == '__main__':
    print(appname('qa', 'east'))

正如@zwer所说:你试图做的不是“迭代”它,而是“查找”数据。在python中,config是dict,它是一个哈希表数据结构。您可以通过密钥直接访问值。而在python的list(= array)中,你需要迭代(=遍历)数据结构才能找到一个项目。