Получить только имена списков из YAML в Python - PullRequest
0 голосов
/ 02 октября 2019

Допустим, у меня есть файл yaml со следующей структурой:

root:
  uncle:
  children:
    son:
      grandson:
        bob:
        charlie:
    daughter:
      granddaughter:
        tamara:
        julia:

, и все, что я хочу, это отображать только потомков детей, без своих собственных потомков. Чтобы уточнить, я хочу отображать только:

son: 
daughter:

Я написал следующий фрагмент кода:

import yaml

    with open('sample.yaml', 'r') as list:
        children_list = yaml.safe_load(list)
        print(children_list["root"]["children"])

, но он печатает меня все:

 children:
    son:
      grandson:
        bob:
        charlie:
    daughter:
      granddaughter:
        tamara:
        julia:

Как можноЯ исправляю свой код?

Ответы [ 2 ]

1 голос
/ 02 октября 2019

если я понимаю, вам нужны ключи, просто добавьте children_list ["root"] ["children"]. Keys ()

0 голосов
/ 02 октября 2019

Вы можете исправить свой код, точно описав, что вы хотите напечатать. Прежде всего, ваша yaml загруженная структура имеет вид

{'root': {
    'uncle': None
    'children': {
        'son': {
            'grandson': {
                 'bob': None,
                 'charlie': None}},
        'daughter': {
            'granddaughter': {
                 'tamara': None,
                 'julia': None}}}}}

Это вложенный диктат. Ваш код запрашивает запись ['root'] ['children'], которая является структурой

{'son': {'grandson': {'bob': None, 'charlie': None}},
 'daughter': {'granddaughter': {'tamara': None, 'julia': None}}}

Если вам нужны только метки (ключи), то вам нужно извлечь эти ключи из этогоструктура:

for k in children_struct["root"]["children"].keys():
    print(k)

Это напечатает метки - но без конечного двоеточия, так как это синтаксический разделитель, а не часть сохраненной структуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...