如何在 Yaml 文件中并行遍历三个列表

How to iterate through three lists in parallel in Yaml file

每次迭代需要更改 3 个变量。

ver = [1,2,3]
tes = [a,b,c]
bet = [1a.2b.3c]

{% for v,t,b in ver,tes,bet %}
 {{ v }} {{ t }} {{ b}}
{% endfor %}

o/p:

1 a 1a
2 b 2b
3 c 3c

我运行也一样,弄的很乱o/p。在每次迭代中应该只有 3 次迭代打印 3 个变量。 如何使用 for 循环执行上述操作?在上面的例子中

任何关于我哪里出错的建议都会有所帮助谢谢!

看起来您需要一些行为类似于 Python 的 zip 函数的东西。这是一个选项,我们只需将 zip 暴露给 Jinja 环境:

>>> import jinja2
>>> ver=[1,2,3]
>>> tes=['a','b','c']
>>> bet=['1a','2b','3c']
>>> t=jinja2.Template('''{% for v,t,b in zip(ver,tes,bet) %}
...  {{ v }} {{ t }} {{ b}}
... {% endfor %}
... ''')
>>> t.environment.globals.update(zip=zip)
>>> print(t.render(ver=ver,tes=tes,bet=bet))

 1 2 3

 a b c

 1a 2b 3c

>>>

您可以使用以下代码:

{% for i in range([ver|count, tes|count, bet|count]|min) %}
  {{ ver[i] }} {{ tes[i] }} {{ bet[i] }}
{% endfor %}

它仅使用内置过滤器和函数:

  • 计数
  • min(处理不同长度的序列,类似于python中的zip)
  • 范围

python中的全部代码:

import jinja2

ver = [1, 2, 3, 4]
tes = ['a', 'b', 'c']
bet = ['1a', '2b', '3c']
t = jinja2.Template('''{% for i in range([ver|count, tes|count, bet|count]|min) %}
  {{ ver[i] }} {{ tes[i] }} {{ bet[i] }}
{% endfor %}
''')
print(t.render(ver=ver, tes=tes, bet=bet))