我试着检查一个值是否存在于一个包含字典的列表中。我使用的是flask 1.0.2。请看下面的例子:
person_list_dict = [
{
"name": "John Doe",
"email": "johndoe@mydomain.com",
"rol": "admin"
},
{
"name": "John Smith",
"email": "johnsmith@mydomain.com",
"rol": "user"
}
]
我找到了两种解决这个问题的方法,你能告诉我哪一个更好吗?:
第一种选择:jinja2内置模板过滤器"map"
<pre>{% if "admin" in person_list_dict|map(attribute="rol") %}YES{% else %}NOPE{% endif %}</pre>
# return YES (john doe) and NOPE (john smith)
第二种选择:Flask模板过滤器
Flask代码:
@app.template_filter("is_in_list_dict")
def is_any(search="", list_dict=None, dict_key=""):
if any(search in element[dict_key] for element in list_dict):
return True
return False
模板代码:
<pre>{% if "admin"|is_in_list_dict(person_list_dict, "rol") %} YES {% else %} NOPE {% endif %}</pre>
# return YES (john doe) and NOPE (john smith)
谢谢 :-).