如何在 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))
每次迭代需要更改 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))