python - 如何将嵌套列表中的 collections.defaultdict(list) 的结果输出到 jinja 中?

标签 python jinja2

我的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 %} 

countlength 的别名。

Jinja 中没有可调用的 xrange(),但您确实得到 range() .

关于python - 如何将嵌套列表中的 collections.defaultdict(list) 的结果输出到 jinja 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24209200/

相关文章:

scripting - 在 ansible Playbook 的 Jinja2 模板中使用变量

python - 使用 PIL 在正方形内绘制线条

python - 在存在 NaN 的情况下将 pandas 列拆分为新列

python - 在 Python 中查找元组中的不匹配项并合并它们

Python:如何将自定义类成员与内置类型进行比较

javascript - 无法访问从 html javascript 上的 python render_template (jinja2/webapp2) 传递的参数

html - 如何动态改变顶部菜单的背景颜色?

python - 使用带有子进程的单个命令运行 100 个文件

python - yaml 将字典加载为 jinja 模板中不带引号和括号的字符串

python - 使用 Flask 在 2 个不同的地方闪烁 2 组消息