gpt4 book ai didi

python - 如何使用 Jinja2 模板制作一个简单的计数器?

转载 作者:太空狗 更新时间:2023-10-29 17:27:10 27 4
gpt4 key购买 nike

我有两个 for 循环,两者都非常相似。我希望在每次内部迭代期间增加一个计数器。

例如,考虑这个模板:

from jinja2 import Template

print Template("""
{% set count = 0 -%}
{% for i in 'a', 'b', 'c' -%}
{% for j in 'x', 'y', 'z' -%}
i={{i}}, j={{j}}, count={{count}}
{% set count = count + 1 -%}
{% endfor -%}
{% endfor -%}
""").render()

这不应该打印 count=0count=8 吗? 不,它没有。

i=a, j=x, count=0
i=a, j=y, count=1
i=a, j=z, count=2
i=b, j=x, count=0
i=b, j=y, count=1
i=b, j=z, count=2
i=c, j=x, count=0
i=c, j=y, count=1
i=c, j=z, count=2

什么给了?

注意:我不能简单地保存外部 loop 变量来计算计数器,因为在我的软件中,内部迭代次数是可变的。

最佳答案

对于可变的内部组大小,这将起作用:

from jinja2 import Template

items = [
['foo', 'bar'],
['bax', 'quux', 'ketchup', 'mustard'],
['bacon', 'eggs'],
]

print Template("""
{% set counter = 0 -%}
{% for group in items -%}
{% for item in group -%}
item={{ item }}, count={{ counter + loop.index0 }}
{% endfor -%}
{% set counter = counter + group|length %}
{% endfor -%}
""").render(items=items)

...打印:

item=foo, count=0
item=bar, count=1

item=bax, count=2
item=quux, count=3
item=ketchup, count=4
item=mustard, count=5

item=bacon, count=6
item=eggs, count=7

我猜在超过一级作用域之外声明的变量不能被分配给什么。

关于python - 如何使用 Jinja2 模板制作一个简单的计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3482297/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com