如何使用 jinja2 检查字典中的列表元素?

Posted

技术标签:

【中文标题】如何使用 jinja2 检查字典中的列表元素?【英文标题】:How do I check a list element inside a dict using jinja2? 【发布时间】:2019-07-20 07:41:38 【问题描述】:

我有一个如下所示的列表,我希望使用 jinja2 访问/检查模板中 dict 中列表索引处的值:

Dict : '110.34.214.180': [['SR12'], 'Unavailable', '0'], 
        '110.34.214.110': [['SR9'], 'Unavailable', '0'], 
        '105.34.214.184': [['SR11'], 'Available', '0'], 
        '110.34.214.100': [['SR2'], 'Unavailable', '0'], 
        '110.34.214.124': [['SR7'], 'Unavailable', '0'], 
        '110.138.249.238': [['SR5'], 'Unavailable', '0']
       

我想检查这样的东西,值[1]是否可用,然后只打印列表的值[0]:

% for stations, value in AliasDict.items %
   % if value[1] == 'Unavailable' %
       <a href="#"> forloop.counter. stations : value[0]</a>
   % endif %
% endfor % 

我该如何做到这一点?

def render_home_elements(self, request):
    return render(request, 'home/home.html','AliasDict':self.teDict)

【问题讨论】:

【参考方案1】:

你已经很接近了。

试试:

import jinja2

AliasDict = '110.34.214.180': [['SR12'], 'Unavailable', '0'], 
        '110.34.214.110': [['SR9'], 'Unavailable', '0'], 
        '105.34.214.184': [['SR11'], 'Available', '0'], 
        '110.34.214.100': [['SR2'], 'Unavailable', '0'], 
        '110.34.214.124': [['SR7'], 'Unavailable', '0'], 
        '110.138.249.238': [['SR5'], 'Unavailable', '0']
       

s = """% for stations, value in AliasDict.items() %
   % if value[1] == 'Unavailable' %
       <a href="#"> loop.index. stations : value[0]</a>
   % endif %
% endfor % """

template = jinja2.Environment().from_string(s)
data = template.render(AliasDict=AliasDict)
print(data)

【讨论】:

抱歉,我想在 HTML 本身中呈现页面。不在 python 中。 在你的html中使用变量s中的内容

以上是关于如何使用 jinja2 检查字典中的列表元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用字典查找替换列表中的元素

如何从字典中的列表中删除元素[重复]

python如何将列表中的元素添加进字典

如何在Jinja中同时遍历2个元素?

如何在 Jinja2 的变量中嵌入变量?

如何比较字典值中的多个数组,并将每个数组元素的字典键映射到新数组/列表中