我的Python代码
d = collections.defaultdict(list)
for k in results:
d[k[0]].append(k[1:4])
e= collections.OrderedDict(sorted(d.items(), key=lambda t: t[0]))
for key,value in e.items():
for p in xrange(len(value)):
print value[p][0]
我想做什么
如何从该位中选择 jinja 中的值?
for key,value in e.items():
for p in xrange(len(value)):
print value[p][0]
我以为会是:
{%for key, value in groups.items()%}
{%for p in xrange(len(value))%}
<tr>
<td>{{value[p][1]}}</td><td>{{value[p][2]}}</td><td>{{value[p][4]}}</td>
<td>{{value[p][5]}}</td><td>{{value[p][3]}}</td>
</tr>
{%endfor%}
{%endfor%}
尽管这会产生错误
jinja2.exceptions.UndefinedError: 'len' is undefined
最佳答案
不要使用xrange()
;您可以直接循环遍历值列表:
{%for key, value in groups.items()%}
{%for elem in value %}
<tr>
<td>{{ elem[1] }}</td><td>{{ elem[2] }}</td><td>{{ elem[4] }}</td>
<td>{{ elem[5] }}</td><td>{{ elem[3] }}</td>
</tr>
{%endfor%}
{%endfor%}
如果您确实需要对象(如列表)的长度,请在 Jinja 模板中使用 length
filter :
{% if value|length < 5 %}Short list!{% endif %}
count
是 length
的别名。
Jinja 中没有可调用的 xrange()
,但您确实得到 range()
.
关于python - 如何将嵌套列表中的 collections.defaultdict(list) 的结果输出到 jinja 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24209200/