jinja2:拒绝字典中的特定属性

Joh*_*etz 5 python jinja2

我有以下字典:

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)

我尝试过使用内置过滤器rejectrejectattr但它没有按预期工作。这是我到目前为止所尝试过的:

{{ 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)

das*_*smy 1

也许有点晚了,但大致上是这样的

{{ d.items() | rejectattr('0', 'equalto', '_id') | list }}
Run Code Online (Sandbox Code Playgroud)

可能有帮助:它将字典转换为元组列表,并根据每个元组中第一个条目的值拒绝条目。最终|list可能不是必需的,具体取决于您的用例。它只是将创建的生成器对象rejectattr再次转换为列表。