目前,我正在尝试通过循环访问所有键来访问位于不同映射“级别”的YAML键。循环通过前两个“层次”的工作,但并不比这更深。代码仍在运行。只是没有进入下一个循环。你知道吗
我尝试了for循环的不同变体:
亚马尔:
---
root:
- key1: bla
key2: bla
sub:
key3: bla
key4: bla
map: {key5: bla, key6: bla, key7: bla}
sub:
- key8
.
.
.
jinja2模板:
{% for l0 in root %}
test0
{% for l1 in l0.sub %}
test1
{% for l2 in l1.sub %}
test2
{% for l3 in l2.sub %}
test3
{% endfor %}
{% endfor %}
{% endfor %}
{% endfor %}
谢谢你的帮助!你知道吗
root
包含一个序列。因此,最外层的循环在root
中的序列项上迭代,这很好。你知道吗第二个循环从当前项查询
sub
的值。sub
包含的不是序列,而是映射。映射被加载到Python dict对象中。在Python中,dict对象上的for
循环在键上迭代。在迭代过程中,l1
将包含以下字符串值:由于这些都是字符串,
l1.sub
不存在,因此第三个循环永远不会执行。你知道吗现在,要解决这个问题,您需要考虑数据的含义。奇怪的是,第9行的嵌套
sub
确实再次包含序列,而第5行的初始sub
却没有。也许你的问题出在数据上,而外部的sub
实际上应该包含一个序列?你知道吗对以下数据执行模板将使用内部循环:
如果数据是正确的,您应该考虑是真的要执行
l1
循环,还是要执行此操作:这直接进入内部
sub
,实际上是一个序列。你知道吗相关问题 更多 >
编程相关推荐