访问YAML中的嵌套元素并输出有序的唯一python列表

问题描述 投票:0回答:1

我正在尝试解析yaml文件,以将嵌套的子元素输出到有序的唯一python列表中,该列表不包含重复值。我输入的yaml文件是:

# example.yml

name_1:
  parameters:
    - soccer
    - football
    - basketball
    - cricket
    - hockey
    - table tennis
  tag:
    - navigation
  assets:
    - url

name_2:
  parameters:
  - soccer
  - rugby
  - swimming
  examples:
  - use case 1
  - use case 2
  - use case 3

我设法打印出所有父母的第一个孩子,它们是:

['assets', 'examples', 'parameters', 'tag']

具有以下代码:

import yaml

with open(r'/Users/.../example.yml') as file:
    documents = yaml.full_load(file)

    a_list = []
    for item, doc in documents.items():
        a_list.extend(doc)
    res = list(set(a_list))
    res.sort()
    print(res)

我正在努力扩展脚本,以在parameters元素下方获取以下有序唯一列表:

['basketball', 'cricket', 'football', 'hockey', 'rugby', 'soccer', 'swimming', 'table tennis']

提前感谢您的任何建议!

python yaml pyyaml
1个回答
0
投票

我能够通过重复使用parameters键来获得此权限-

import yaml

with open(r'example.yaml') as file:
    documents = yaml.full_load(file)

    a_list = []
    a_vals=[]
    for item, doc, in documents.items():
        for val in doc['parameters']:
            a_vals.append(val)
        a_list.extend(doc)
    res = list(set(a_list))
    res.sort()
    a_vals=list(set(a_vals))
    a_vals.sort()
    print(a_vals)
    print(a_list)

输出-

python.exe "pysuperclass.py"
['basketball', 'cricket', 'football', 'hockey', 'rugby', 'soccer', 'swimming', 'table tennis']
['parameters', 'tag', 'assets', 'parameters', 'examples']
© www.soinside.com 2019 - 2024. All rights reserved.