我的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
答案 0 :(得分:3)
不要使用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()
。
答案 1 :(得分:0)
as @Martijn Pieters说你可以迭代list
元素,但为了回答你为什么会得到这个例外:
len
未定义,但您可以使用length()
insted:
文档中写入的长度将返回序列或映射的项目数。您可以阅读更多here
另外,要获得leagnth,您可以count()
使用list_size = my_list.count()