gpt4 book ai didi

python - 打印可能存在或不存在的嵌套字典值

转载 作者:太空宇宙 更新时间:2023-11-04 02:23:04 25 4
gpt4 key购买 nike

我在 Python (Django) 中有一个嵌套字典,如下所示:

books = 
{
1: { 1: 'Alice', 2: 'Bob', 3: 'Marta' },
2: { 1: 'Alice', 3: 'Marta' },
3: { 1: 'Alice', 2: 'Bob' },
}

现在在我的模板中,我想打印一个特定的项目,但前提是它存在,例如 books[4][1]。但如果我这样做,我会得到:

{{ books[4][1] }}

Error: Could not parse the remainder

所以我做了一个检查:

{% if 4 in books %}
{% if 1 in books[4] %}
{{ books[4][1] %}
{% endif %}
{% endif %}

这也不起作用并给出一个解析错误(无法解析余数)。如果我不确定它是否存在于字典中,在 Django 中打印嵌套字典值的正确方法是什么?

最佳答案

Django 模板语言故意不同于 Python 代码,因此不鼓励人们将业务逻辑写入其中。

但是模板逻辑足够强大,可以通过用点符号编写来对项目执行项目 getter 。例如:

{{ books[4][1] }}

Should be written like:

{{ books<b>.4.1</b> }}

所以你可以这样写:

{% if 4 in books %}
{% if 1 in books<b>.4</b> %}
{{ books<b>.4.1</b> %}
{% endif %}
{% endif %}

话虽这么说,所有这些查找根本就没有必要。因为如果查找失败,Django 通常不会产生错误。在这种情况下,它会在需要打印时回退到 TEMPLATE_STRING_IF_INVALID 字符串。默认情况下为空,因此我们可以避免麻烦并编写:

{{ books.4.1 }}

这将在元素存在的情况下打印settings.TEMPLATE_STRING_IF_INVALID(如果未指定,则为空字符串)。

如果您想执行检查,您可以直接在整个变量上使用if,例如:

{% <b>if books.4.1</b> %}
{{ books.4.1 %}
{% endif %}

检查这个“模板变量”表达式是否得到解析,并且结果具有真实性 True

关于python - 打印可能存在或不存在的嵌套字典值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51124186/

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