遍历嵌套字典(Jinja2,Flask)

时间:2018-08-09 12:22:39

标签: python flask jinja2 template-engine

我花了太多时间试图解决这个问题。我有一本类似以下的字典:

{'asset_1': {'scenario_1':10%, 'scenario_2':-20%}, 'asset_2': {'scenario_1':-11%, 'scenario_2':30%}, 'asset_3': {'scenario_1':15%, 'scenario_2':22%}, 'asset_4': {'scenario_1':-13%, 'scenario_2':30%}}

我现在要做的是遍历表中的每个资产,然后遍历每个场景并将其填写。但是我无法在最内部访问外循环的资产名称。但是,我可以通过{% set asset_loop = loop %}访问索引,然后说{{asset_loop.index}},但这没有帮助,因为在调用{{asset_loop.index}}之前我必须知道哪个索引对应于哪个资产(因此我创建了如下字典:{0: {'scenario_1':...}, 1: {'scenario_1':,...},..},但我不能保证字典中的顺序!

这是我拥有的atm,虽然不能正常工作,但是显示了我想要实现的目标:

{% for asset in (raw_results["risk_scenarios"].keys() | list) %}
     {% set asset_loop = loop %}
     <tr>
         <th>{{asset}}</th>
         <td>weight</td>

         {% for scenario in raw_results["risk_scenarios"][{{asset}}] %}
             <td>{{raw_results["risk_scenarios"][{{asset}}][{{scenario}}]}}</td>
         {% endfor %}
     </tr>
{% endfor %}

1 个答案:

答案 0 :(得分:1)

您不必在标记内使用Jinja模板语法。 尝试将asset用作普通变量: {% for scenario in raw_results["risk_scenarios"][asset] %}

scenario

也是如此