如何读取Django模板中的嵌套字典?

2024-10-06 13:36:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Django的模板中访问以下数据结构。但这对我来说太难了。在

{ Day1 : { Room1 : [(datetime.date(), (totalTime1, Flag1)),
                    (datetime.date(), (totalTime2, Flag2)),
                    (datetime.date(), (totalTime3, Flag3)),
                    (datetime.date(), (totalTime4, Flag4))],

           Room2 : [(datetime.date(), (totalTime1, Flag1)),
                    (datetime.date(), (totalTime2, Flag2)),
                    (datetime.date(), (totalTime3, Flag3)),
                    (datetime.date(), (totalTime4, Flag4))],

           Room3 : [(datetime.date(), (totalTime1, Flag1)),
                    (datetime.date(), (totalTime2, Flag2)),
                    (datetime.date(), (totalTime3, Flag3)),
                    (datetime.date(), (totalTime4, Flag4))] },

 Day2 : {  Room1 : [(datetime.date(), (totalTime1, Flag1)),
                    (datetime.date(), (totalTime2, Flag2)),
                    (datetime.date(), (totalTime3, Flag3)),
                    (datetime.date(), (totalTime4, Flag4))],

           Room2 : [(datetime.date(), (totalTime1, Flag1)),
                    (datetime.date(), (totalTime2, Flag2)),
                    (datetime.date(), (totalTime3, Flag3)),
                    (datetime.date(), (totalTime4, Flag4))],

           Room3 : [(datetime.date(), (totalTime1, Flag1)),
                    (datetime.date(), (totalTime2, Flag2)),
                    (datetime.date(), (totalTime3, Flag3)),
                    (datetime.date(), (totalTime4, Flag4))] } }

可能这是一个非常复杂的数据结构,但我对此感到抱歉。我不能拆散它。我的选择是有限的。 我想在一个循环中访问每个元素。我该怎么做?在

编辑:我想从django模板访问元素。在


Tags: 模板数据结构datetimedateflag3flag1flag2room1
3条回答

它不能在一个循环中完成,但可以通过一些嵌套来完成:

{% for day, rooms in mydict.items %}
  {% for room, dates_and_flags in rooms.items %}
    {% for date, time_and_flags in dates_and_flags %}
        {{ date }}:{{ time_and_flags }}
    {% endfor %}
  {% endfor %}
{% endfor %}

因为time_and_flags是一个元组,所以可以使用time_and_flags.0和带有{}的标志来访问时间。在

这是一个生成器函数,它将返回循环中的每一行:

def next_row(data):
    for day,rooms in data.iteritems():
        for room,times in rooms.iteritems():
            for time in times:
                yield (day, room, time)

这样使用:

^{pr2}$

我可以用一个循环来完成这个任务——尽管我可能误解了前面的答案或最初的问题。不管怎样,这可能会有助于其他人在Django中使用嵌套字典

联合收割机

  • 在Django中循环遍历字典的.items()方法
  • 属性查找的.value语法

你的示例字典并不完全是一本字典,作为另一个例子

grades_dict = {'Math': {'grade': 78, 'grade_date': '2016-05-15'},
'Reading': {'grade': 83, 'grade_date': '2016-08-16'},
'Science': {'grade': 98, 'grade_date': '2016-08-16'},
'Social Studies': {'grade': 62, 'grade_date': '2016-05-15'}}

在django模板html中

^{pr2}$

结果

Grade for Social Studies: 62.

Last entered on 2016-05-15

Grade for Science: 98.

Last entered on 2016-08-16

Grade for Reading: 83.

Last entered on 2016-08-16

Grade for Math: 78.

Last entered on 2016-05-15

相关问题 更多 >