小编use*_*855的帖子

获取符合Jinja2条件的列表项的计数

我有一个字典列表,其中每个字典都有一个布尔条目.我想显示这些项目True以及这些项目的数量.我正在使用selectattr过滤器,但它返回一个生成器,并且调用|length它会引发错误.如何获得selectattrJinja 退回物品的长度?

my_list = [{foo=False, ...}, {foo=True, ...}, ...]
Run Code Online (Sandbox Code Playgroud)
{{ my_list|selectattr('foo', 'equalto', True)|length }}
Run Code Online (Sandbox Code Playgroud)

python jinja2 flask

3
推荐指数
1
解决办法
2729
查看次数

凝聚连续的'尝试'块

我试图用一个现有的dict,例如,五个可能的条目,并将其条目移动到一个新的字典,"翻译"沿途的键.第一个字典的键的结构使得移动不能在程序上完成.无法保证所有条目都将出现在第一个词典中.

为了避免KeyError,可以在自己的try块中分配每个条目

first_dict = {
   'key_1': foo1,
   'key_two': foo2,
   'key_three': foo3,
   'key_number_4': foo4,
   'key_5': foo5
}

second_dict = {}

try: 
    second_dict['translated_key_1'] = first_dict['key_1']
except KeyError:
    pass

try:
    second_dict['translated_key_2'] = first_dict['key_two']
except KeyError:
    pass

...

try:
    second_dict['translated_key_5'] = first_dict['key_5']
except KeyError:
    pass


   'translated_key_2': first_dict['key_two'],
   'translated_key_3': first_dict['key_three'],
   'translated_key_4': first_dict['key_number_4'],
   'translated_key_5': first_dict['key_5'],
}
Run Code Online (Sandbox Code Playgroud)

也许更好的方法是检查第一个字典中是否存在该条目然后分配它.

if 'key_1' in first_dict:
    second_dict['translated_key_1'] = first_dict['key_1']
if 'key_two' in first_dict:
    second_dict['translated_key_2'] = first_dict['key_two']
...
Run Code Online (Sandbox Code Playgroud)

在任何一种情况下,有没有办法压缩这个?当元素的数量很大时,似乎这会变得不必要地笨重.有没有办法迭代关系而不try为每个创建一个块?

python try-catch

2
推荐指数
1
解决办法
102
查看次数

标签 统计

python ×2

flask ×1

jinja2 ×1

try-catch ×1