Как прочитать значение dict yaml без использования массива? - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть файл test1.yaml, как показано ниже

  accounts:
  - name: account1
    dockerRegistries: 
    - set1
    - set2
    - set3
  - name: account2
    dockerRegistries: 
    - set2
    - set4
    - set5
  - name: account3
    dockerRegistries:
     - set2
     - set5
     - set4

Мне нужно значение dockerRegistries для определенного имени.

Я попробовал следующее после прочтения файла yaml:

     accounts = []
     account_name = y['kubernetes']['accounts']
     for account in account_name:
        accounts.append(account['name'])
     if account['name'] == 'account1':
        print(y['kubernetes']['accounts'][0]['dockerRegistries'])     

Приведенный выше код дает значение в соответствии с массивом 0,1 и так далее.Но я хочу, чтобы значение dockerRegistries соответствовало условию if.

Если я даю

        if account['name'] == 'account1' 

Я хочу

        ["set2", "set4", "set5"]

Как мне этого добиться?

1 Ответ

0 голосов
/ 15 февраля 2019

Вы хотите переместить if внутрь цикла for.Примерно так:

accounts = []
account_name = y['kubernetes']['accounts']
for account in account_name:
    accounts.append(account['name'])
    if account['name'] == 'account1':
        print(account['dockerRegistries'])

В зависимости от количества учетных записей и того, что еще вы хотите с ними сделать, словарь может быть разумным решением:

accounts = {account['name']:account for account in y['kubernetes']['accounts']}
print(accounts['account1']['dockerRegistries'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...