gpt4 book ai didi

python - 当 key 明确存在时,模板中出现 KeyError

转载 作者:太空宇宙 更新时间:2023-11-03 18:28:55 25 4
gpt4 key购买 nike

我想在模板数据中渲染如下:[{'name': 'Some name', 'description': 'Description for this item'}]

我尝试使用此代码:

{% for item in source_data %}
<tr>
<td>{{ item['name'] }}</td>
<td>{{ item['description'] }}</td>
</tr>
{% end %}

它不起作用,因为我收到 KeyError: 'description' 异常。

但是,如果我将第二个占位符更改为 {{ item.get('description') }} ,它会按预期工作(打印字典中的正确数据,而不是默认值)。

什么会产生这种错误?

最佳答案

看起来并非所有词典都有 description 键。

不要直接通过键获取值,而是使用字典 get()方法,如果找不到 key ,则不会抛出KeyError:

{% for item in source_data %}
<tr>
<td>{{ item['name'] }}</td>
<td>{{ item.get('description', 'No description') }}</td>
</tr>
{% end %}

演示:

>>> from tornado import template
>>> source_data = [
... {'name': 'Some name', 'description': 'Description for this item'},
... {'name': 'test'}
... ]

>>> template1 = template.Template("""
... {% for item in source_data %}
... {{ item['description'] }}
... {% end %}
... """)

>>> template2 = template.Template("""
... {% for item in source_data %}
... {{ item.get('description', 'No description found') }}
... {% end %}
... """)

>>> print template1.generate(source_data=source_data)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "tornado/template.py", line 278, in generate
return execute()
File "<string>.generated.py", line 7, in _tt_execute
KeyError: 'description'
>>> print template2.generate(source_data=source_data)

Description for this item

No description found

希望有帮助。

关于python - 当 key 明确存在时,模板中出现 KeyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22715368/

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