Flask и Jinja2. Наличие значения в списке словарей

Как проверить имеется ли внутри списка словарей ключ с определенным значением:

Как пример: [{'a':0,'b':1,'c':3},{'a':1,'b':2,'c':3},{'a':2,'b':3,'c':4}]

И нужно внутри jinja2 проверить есть ли ключ "b" со значением "2"


Ответы (1 шт):

Автор решения: Alioshca Z

Допустим, что в вашей функции вы передаёте этот список через переменную context :

context = [{'a':0,'b':1,'c':3},{'a':1,'b':2,'c':3},{'a':2,'b':3,'c':4}]
return render_template('temp.html', context=context)

Тогда в шаблоне temp.html это будет выглядеть так:

{% for dct in context %}
    {% if 'b' in dct.keys() %}
        {% if dct.b == 2 %}
            <p>Найден словарь с "b" = {{ dct.b }}</p>
        {% endif %}
    {% endif %}
{% endfor %}

Сначала циклом проходим по каждому словарю. Проверяем, есть ли в словаре dct ключ b. Если такой ключ есть, то проверяем, равен ли этот ключ b значению 2. Если нашли совпадение, выводим тег.

=========================================================

Дополнение в соответствии с комментариями. Сразу в функции представления попробовать найти нужные ключ-значение и передать True/False в шаблон.

s = [{'a':0,'b':1,'c':3},{'a':1,'b':2,'c':3},{'a':2,'b':3,'c':4}]

for dct in s:
    if ('b', 2) in dct.items():
        context = True
        break
    else:
        context = False

return render_template('temp.html', context=context)
→ Ссылка