You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jinja2遍历含多值的Python字典失败,求正确实现方案

问题解决:Jinja2遍历字典列表数据的正确方式

你的代码无法显示内容的核心原因是:直接遍历my_dict只会得到字典的键名(比如quiz_id、quiz_title、score),而非你期望的每行数据对象。你的字典结构是「键对应同长度的列表」,需要把三个列表中的元素按索引一一配对后再遍历。

下面提供两种可行的解决方法:

方法1:后端预处理数据(推荐)

在后端(如Flask/Django)将原字典转换为列表套字典的结构,再传递给模板:

# 后端处理代码
my_list = [
    {"quiz_id": qid, "quiz_title": qt, "score": s}
    for qid, qt, s in zip(my_dict["quiz_id"], my_dict["quiz_title"], my_dict["score"])
]
# 将my_list传入模板,替代原my_dict

模板中使用以下代码遍历:

{% for data in my_list %}
    <div class="row border-bottom">
        <div class="col-2 my-3">
            {{ data.quiz_id }} 
        </div>
        <div class="col-7 my-3 text-start">
            {{ data.quiz_title }} 
        </div>
        <div class="col-3 my-3">
            {{ data.score }} 
        </div>
    </div>    
{% endfor %}

方法2:直接在Jinja2模板中处理

Jinja2支持zip函数,可直接在模板中把三个列表配对遍历:

{% for qid, qtitle, s in zip(my_dict.quiz_id, my_dict.quiz_title, my_dict.score) %}
    <div class="row border-bottom">
        <div class="col-2 my-3">
            {{ qid }} 
        </div>
        <div class="col-7 my-3 text-start">
            {{ qtitle }} 
        </div>
        <div class="col-3 my-3">
            {{ s }} 
        </div>
    </div>    
{% endfor %}

注意:原代码还有一处错误——字典中分数对应的键是score,而非你写的quiz_score,上述两种方法已修正该问题。

内容的提问来源于stack exchange,提问作者Aristotle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 08:20:27