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

如何在Jinja2中基于列表匹配字典键并快速获取对应值?

Jinja2 高效获取指定字典键值对的方法

首先纠正你写的tag_dict格式错误——这应该是个字典而非列表,正确写法是:

tag_dict = {1:{"a": "b", "y": "z"}, 2:{"a": "b", "y": "z"}, 3:{"a": "b", "y": "z"}}

你完全不需要用嵌套循环,字典的核心优势就是O(1)时间复杂度的键查找,直接通过键名就能快速定位对应值,没必要遍历整个字典去匹配。

根据你的需求,分两种场景给出实现:

场景1:遍历account_id_list时,仅当元素为3时取出tag_dict[3]的键值对

{% for account_id in account_id_list %}
    {% if account_id == 3 %}
        {% set target_tags = tag_dict[3] %}
        {# 遍历输出键值对 #}
        {% for k, v in target_tags.items() %}
            {{ k }}: {{ v }}
        {% endfor %}
    {% endif %}
{% endfor %}

场景2:遍历account_id_list全程参照tag_dict[3]的内容(比如对比、复用)

提前把参照值赋值给变量,遍历过程直接调用,避免重复查找:

{# 提前获取参照的键值对,只查一次 #}
{% set reference_tags = tag_dict[3] %}

{% for account_id in account_id_list %}
    当前账户ID:{{ account_id }}
    参照标签a的值:{{ reference_tags.a }}
    参照标签y的值:{{ reference_tags.y }}
    {# 这里可以添加其他业务逻辑 #}
{% endfor %}

这种写法比嵌套循环效率高得多:嵌套循环需要遍历account_id_list的同时再遍历tag_dict,时间复杂度是O(n*m);而直接键查找只需要O(n)(遍历列表的时间),字典查找操作都是常数时间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:30:06