遍历数组神社

问题描述:

我有以下神社阵列:遍历数组神社

{'e34': ['120'], 'e24': ['50']} 

我想找如果字包含e2,并把它带到另一个函数。

我做了以下内容:

{% set result = 'default' %} 
{% for item, value in jinjaarray.items() %} 
    {% if 'e2' in item %} 
     result = item 
    {% endif %} 
{% endfor %} 

但它失败,并且不进入到循环。

我该怎么办?

相反,使用Python3等.items(),jinja2使用Python2-fashioned .iteritems(),如docs中所述。

此外,你需要使用set字典assign变量resultitem

from jinja2 import Template 

d = {'e34': ['120'], 'e24': ['50']} 

s = """{% set result = 'default' %} 
{% for item, value in test_dict.items() %} 
    {% if 'e2' in item %} 
     {% set result = item %} 
     {{ result }} 
    {% endif %} 
{% endfor %}""" 

template = Template(s) 
print(template.render(test_dict=d)) 

因为我在我的系统我不得不打电话.items()使用Python3。取决于您的版本,您可以改为拨打.iteritems()

因为我没有在我的系统上设置jinja2沙箱环境,所以我不得不写一个如上所示的快速脏代码片段。这提供了以下的输出:

'\n\n \n  \n  e24\n \n\n \n' 

光学上讲这是不是很好,但它打印出的e24期望值。

+0

它仍然没有进入循环...我注意到结果没有更新。 – MiddleWare

+0

您能否为您的问题添加一个最小工作示例以便让我的系统上运行一些代码? – albert

+0

当我打印jinjaarray时,它给了我以下结果:'{'e34':['120'],'e24':['50']}'。这个数组来自外部软件,所以我不能写你的例子。所以结果是,我应该得到'e24',但是我得到'default'(循环结束后)。 – MiddleWare