首页 > 解决方案 > Python - 解析 YAML 字典以按层次结构获取密钥

问题描述

我有一个 YAML 字典,我需要在其中迭代层次结构的第二个键(/home、/career、/help、/)以查找键“pass_key”的存在。“pass_key”的位置始终是固定的(第 4 个层次结构)。

api:
  /home:
    post:
      pass_key: some_value
  /career:
    get:
      pass_key: some_value
  /help:
    post:
      pass_key: some_value

挑战是,我无法在不知道密钥名称的情况下获得密钥,因为在这里放星号无济于事:) 我怎样才能做到这一点?任何帮助将不胜感激。谢谢!

import yaml

with open(r'./test.yaml') as file:
    api = yaml.load(file, Loader=yaml.FullLoader)
    check_key = api['api'][*][*]['pass_key']
    print(check_key)

错误行 5 路径 = api['api'][ ][ ]['pass_key'] ^ SyntaxError: invalid syntax

标签: pythonpyyaml

解决方案


If you're 100% sure about the dictionary structure, as a trivial solution it is possible to use basic loops:

for layer2_vals in api['api'].values():
    for layer3_vals in layer2_vals.values():
        print(layer3_vals['pass_key'])

output is

some_value
some_value
some_value

推荐阅读