Проблемы с переменной через дефис в словареPython

Программы на Python
Ответить
Anonymous
 Проблемы с переменной через дефис в словаре

Сообщение Anonymous »

Я работаю над сценарием для сбора определенных фрагментов данных из API продуктов, чтобы принимать решения о том, нуждаются ли они в обновлении или нет. Я взял предыдущую XML-строку и применил к ней фильтр from_xml, чтобы получить из нее словарь Python.
Это усеченная версия:

Код: Выделить всё

ok: [host] =>
msg:
response:
'@status': success
result:
enabled: 'yes'
group:
local-info:
state: active
state-duration: '31528713'
state-sync: Complete
mode: Active-Passive
peer-info:
state: passive
state-duration: '23461633'
running-sync: synchronized
running-sync-enabled: 'yes'
Собранные в этом разделе:

Код: Выделить всё

    - name: Set facts for output...
ansible.builtin.set_fact:
primary_status_xml: "{{  ha_status_primary.content | ansible.utils.from_xml  }}"
Затем я пытаюсь найти в своем словаре конкретные фрагменты, которые мне нужны. 2 из 4 моих переменных работают так, как задумано, и в пути нет специальных символов.

Код: Выделить всё

    - name: Set further facts...
ansible.builtin.set_fact:
ha_enabled: "{{  primary_status_xml.response.result.enabled  }}"
ha_mode: "{{  primary_status_xml.response.result.group.mode  }}"
Но у меня есть два значения, содержащие дефис, которые не работают должным образом.

Код: Выделить всё

    - name: Set further facts...
ansible.builtin.set_fact:
primary_ha_state: "{{  primary_status_xml.response.result.group.local-info.state  }}"
secondary_ha_state: "{{  primary_status_xml.response.result.group.peer-info.state  }}"
Совершенно уверен, что причиной является сам дефис, поскольку мои выходные данные сообщают, что словарь, из которого я беру данные, не содержит значения «local», а затем, когда первая переменная закомментирована, она не содержит значения «peer».
Я нашел документацию, которая показывает, что дефис указывает на следующий элемент в списке, что может быть причиной проблемы:
https://docs.ansible.com/projects/ansib ... ould-i-use
Но представленный пример также не работает, когда я меняю образец на:

Код: Выделить всё

    - name: Set further facts...
ansible.builtin.set_fact:
primary_ha_state: "{{  primary_status_xml[response][result][group]['local-info'][state]  }}"
secondary_ha_state: "{{  primary_status_xml[response][result][group]['peer-info'][state]  }}"
Это тоже не работает.

Подробнее здесь: https://stackoverflow.com/questions/798 ... dictionary
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»