Python 当key是变量时,如何从jinja中的字典中获取值?
我试图从jinja2中的python字典中检索条目,但问题是我不知道要提前访问哪个密钥-该密钥存储在名为Python 当key是变量时,如何从jinja中的字典中获取值?,python,variables,dictionary,jinja2,substitution,Python,Variables,Dictionary,Jinja2,Substitution,我试图从jinja2中的python字典中检索条目,但问题是我不知道要提前访问哪个密钥-该密钥存储在名为s.course的变量中。所以我的问题是我需要双重替换这个变量。我不想对循环使用,因为这将超出字典中的必要范围。这里是我创建的一个变通方法,但是有可能s.course值会发生变化,很明显,像这样硬编码是不好的。我希望它基本上是这样工作的: {% if s.course == "p11" %} {{course_codes.p11}} {% elif s.course == "m12a"
s.course
的变量中。所以我的问题是我需要双重替换这个变量。我不想对循环使用,因为这将超出字典中的必要范围。这里是我创建的一个变通方法,但是有可能s.course
值会发生变化,很明显,像这样硬编码是不好的。我希望它基本上是这样工作的:
{% if s.course == "p11" %}
{{course_codes.p11}}
{% elif s.course == "m12a" %}
{{course_codes.m12a}}
{% elif s.course == "m12b" %}
{{course_codes.m12b}}
{% endif %}
{{course_codes.{{s.course}}}}
但我希望它看起来像这样:
{% if s.course == "p11" %}
{{course_codes.p11}}
{% elif s.course == "m12a" %}
{{course_codes.m12a}}
{% elif s.course == "m12b" %}
{{course_codes.m12b}}
{% endif %}
{{course_codes.{{s.course}}}}
谢谢 您可以使用课程代码。获取(s.course)
:
我正在用Jinja和盐,我发现下面的方法效果很好:
{% for role in pillar.packages %}
{% for package in pillar['packages'][role] %}
install_{{ package }}:
pkg.installed:
- name: {{ package }}
{% endfor %}
{% endfor %}
也就是说,使用更详细的[]
语法,并在需要使用变量时省略引号。完全不需要使用点符号,您可以执行以下操作:
"{{course_codes[s.course]}}"
为什么表示相关课程代码的实际对象没有传递到模板?这返回了一个错误无法分析剩余部分:“('a')”来自“code.get('a')”
。即使是{{course\u codes[s.course]}}
对我也不起作用。即使我得到了同样的结果,我可以知道你是如何解决这个问题的吗?当我尝试使用上面的方法时,它返回时无法解析剩余部分:'samType[s.sample\u type]'中的“[s.sample\u type]”