Python 金贾名单问题

Python 金贾名单问题,python,dictionary,jinja2,Python,Dictionary,Jinja2,我在Jinja遇到了一个奇怪的问题,我有一个列表端点,其中包含每个端点的字典。在每个字典中,都有一个键标记,它是一个列表。标记中的每个项本身就是一个字典,其中键值给出标记的标签端点可能具有类似的标记 端点对象的示例抽象表示可以是: [ {"tags":[{"value":"car"},{"value":"place"}]} , {"tags":[{"value":"van"},{"value":"place"}]} ] 我想要的是在一个div中简单地显示唯一的标记。这很简单,保留所有显示标记的

我在Jinja遇到了一个奇怪的问题,我有一个列表
端点
,其中包含每个
端点
的字典。在每个字典中,都有一个键
标记
,它是一个列表。
标记
中的每个项本身就是一个字典,其中键
给出标记的标签<代码>端点可能具有类似的标记

端点
对象的示例抽象表示可以是:

[ {"tags":[{"value":"car"},{"value":"place"}]} , {"tags":[{"value":"van"},{"value":"place"}]} ]
我想要的是在一个div中简单地显示唯一的标记。这很简单,保留所有显示标记的列表,在获得标记时,检查它是否已经在列表中,如果没有,则显示它并将其添加到列表中。奇怪的是,它不起作用

代码为:

{% set tagValues = [] %}
{% for endpoint in endpoints %} 
        {% for tag in endpoint["tags"]%}
                {% set tagValue = tag["tag"]["value"] %}
                {% if tagValue not in tagValues %} 
                        {% set tagValues = tagValues  + [tagValue]  %}
                        <span >{{ tagValue }}</span></a>
                {% endif %}
        {% endfor %}
{% endfor %}

代码有问题吗?

我的jinja知识有限,但通过向输出中添加
tagValues
,似乎在每次外循环迭代后都会重置。我想这和望远镜有关,但我不知道


我的建议是在传递给jinja之前,用常规python预处理
端点
我的jinja知识有限,但是通过向输出中添加
标记值
,它似乎在外部循环的每次迭代后都会重置。我想这和望远镜有关,但我不知道


我的建议是在传递给jinja之前,用常规python预先处理
端点
,我建议在视图中创建一个不同的标记列表。e、 g

distinctTags = list(set([tag for endpoint in endpoints for tag in endpoint]))
并将其传递给模板

{% for tag in distinctTags %} 
    <span >{{ tagValue }}</span></a>
{% endfor %}
{%for distinctTags%中的标记]
{{tagValue}}
{%endfor%}

这样做的好处是,独特的标记代码可以重用,而且代码的过程性也较低。

我建议在您的视图中创建一个独特的标记列表。e、 g

distinctTags = list(set([tag for endpoint in endpoints for tag in endpoint]))
并将其传递给模板

{% for tag in distinctTags %} 
    <span >{{ tagValue }}</span></a>
{% endfor %}
{%for distinctTags%中的标记]
{{tagValue}}
{%endfor%}

这样做的优点是,独特的标记代码可重用,且代码程序性较低。

是的,这就是发生的情况,它正在重置标记值。这就是发生的情况,它正在重置标记值