
概要
備忘録的な小ネタ。Pythonのテンプレートエンジン「Jinja2」で多重forループのインデックスを取得する方法についてです。
Jinja2でインデックスを取得する
Jinja2では、pythonのenumerate関数に相当するものが無いので、ループのインデックスを取得する際はloop.index0(インデックスを1から始めたいときはloop.index)というオブジェクトを使います。
{% for i in list %}
{{ loop.index0 }}
{% endfor %}
多重ループでインデックスを取得する
では、多重ループがあって、その内側のループの中で外側のループのインデックスを扱い時はどうすれば良いでしょうか?その場合は、setを使うと上手くいくそうです。
{% for i in list_a %}
{% set outer_loop = loop %}
{% for j in list_b %}
{{ outer_loop.index0 }}
{% endfor %}
{% endfor %}