我有以下字典:
d = {'name': 'Johnny', 'age': 23, '_id': 167, 'sport': 'golf'}
Run Code Online (Sandbox Code Playgroud)
使用 jinja2 我想过滤掉(或拒绝)密钥_id,这样我就得到以下字典(注意这个_id字段是动态的,所以我想拒绝密钥,无论它等于什么):
{'name': 'Johnny', 'age': 23, 'sport': 'golf'}
Run Code Online (Sandbox Code Playgroud)
我尝试过使用内置过滤器reject,rejectattr但它没有按预期工作。这是我到目前为止所尝试过的:
{{ d | rejectattr('_id') }}
# <generator object select_or_reject>
{{ d | rejectattr('_id', 'defined') }}
# <generator object select_or_reject>
{{ d | reject('_id', 'defined') }}
# <generator object select_or_reject>
Run Code Online (Sandbox Code Playgroud)
也许有点晚了,但大致上是这样的
{{ d.items() | rejectattr('0', 'equalto', '_id') | list }}
Run Code Online (Sandbox Code Playgroud)
可能有帮助:它将字典转换为元组列表,并根据每个元组中第一个条目的值拒绝条目。最终|list可能不是必需的,具体取决于您的用例。它只是将创建的生成器对象rejectattr再次转换为列表。