Python 当key是变量时,如何从jinja中的字典中获取值?

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"

我试图从jinja2中的python字典中检索条目,但问题是我不知道要提前访问哪个密钥-该密钥存储在名为
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]”