访问列表列表中的元素
问题描述:
我最近开始使用python/YAML和JINJA(没有软件经验),因为我想使用Ansible自动化一些任务。访问列表列表中的元素
YAML表示法就是这样,据我了解,这是一个包含其他列表的列表,其中包含其他一些列表。
YAML文件
VARIABLE_NAME:
- LIST_1.1:
- VALUE1
- VALUE2
- LIST_1.2:
- VALUE3
- VALUE4
如果我的理解是正确的,这代表了以下内容:
VARIABLE_NAME=[LIST1.1[VALUE1, VALUE2],LIST1.2[VALUE3, VALUE4]]
在JINJA模板,我想循环和获取列表1个VALUES使用的第一条语句和第二条语句的list2值。事情是这样的:
JINJA模板:
{%for values in List1.List_1.1%}
Statement1 {values}
{% endfor%}
{%for values in List1.List_1.2%}
Statement2 {values}
{% endfor%}
什么会在这个JINJA模板正确的语法来访问YAML的价值观?另外,有没有更好的方法来做到这一点? 感谢您的帮助。
答
你可以试试这个在您的模板:
{%for values in LIST1['LIST_1.1']%}
Statement1 {{values}}
{% endfor%}
{%for values in LIST1['LIST_1.2']%}
Statement2 {{values}}
{% endfor%}
会给你这样的结果:
Statement1 VALUE1
Statement1 VALUE2
Statement2 VALUE3
Statement2 VALUE4
希望这可以帮助你。
嗨,Arbab,谢谢你的回答。我刚编辑我的问题,因为它没有反映我的实际问题。我已经确认你的解决方案适用于前一种情况,但对于这种情况我仍然无法访问嵌套列表中的值。 在JINJA模板我想以下几点:
'{%用于IP在VARIABLE_NAME [RANGES] [IP]%}'
“语句1 {{IP}}'
'{%ENDFOR%}'
但是我仍然在Ansible中找回以下错误:''AnsibleUndefinedVariable:list object has no element undefined“' –