gpt4 book ai didi

merge - 如何修改/合并 Jinja2 词典?

转载 作者:行者123 更新时间:2023-12-03 06:52:22 32 4
gpt4 key购买 nike

我有一个 Jinja2 字典,我想要一个可以修改它的表达式 - 通过更改其内容或与另一个字典合并。

>>> import jinja2
>>> e = jinja2.Environment()

修改字典:失败。

>>> e.from_string("{{ x[4]=5 }}").render({'x':{1:2,2:3}})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "jinja2/environment.py", line 743, in from_string
return cls.from_code(self, self.compile(source), globals, None)
File "jinja2/environment.py", line 469, in compile
self.handle_exception(exc_info, source_hint=source)
File "<unknown>", line 1, in template
jinja2.exceptions.TemplateSyntaxError: expected token
'end of print statement', got '='

两阶段更新:打印多余的“None”。

>>> e.from_string("{{ x.update({4:5}) }} {{ x }}").render({'x':{1:2,2:3}})
u'None {1: 2, 2: 3, 4: 5}'
>>> e.from_string("{{ dict(x.items()+ {3:4}.items()) }}").render({'x':{1:2,2:3}})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "jinja2/environment.py", line 868, in render
return self.environment.handle_exception(exc_info, True)
File "<template>", line 1, in top-level template code
TypeError: <lambda>() takes exactly 0 arguments (1 given)

使用dict(x,**y):失败。

>>> e.from_string("{{ dict((3,4), **x) }}").render({'x':{1:2,2:3}})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "jinja2/environment.py", line 868, in render
return self.environment.handle_exception(exc_info, True)
File "<template>", line 1, in top-level template code
TypeError: call() keywords must be strings

那么如何通过更改属性或与另一字典合并来修改 Jinja2 中的字典 x 呢?

这个问题类似于:How can I merge two Python dictionaries as a single expression? -- Jinja2 和 Python 是类似的。

最佳答案

我找到了另一个没有任何扩展的解决方案。

{% set _dummy = x.update({4:5}) %}

它使 x 更新。不要使用_dummy。

关于merge - 如何修改/合并 Jinja2 词典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2703013/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com