繁体   English   中英

在有序默认字典中访问对象

[英]Access objects in ordered default dict

我正在从这里使用订单默认字典。 问题是我不知道如何访问对象。

我期望这样的事情应该可以工作

{% for zone in data %}
    {% for reservation in zone %}
        {{reservation}} # 1 | 2| 3
    {% endfor %}
{% endfor %}

数据帮助调试

{{data}}

OrderedDefaultDict(<type 'list'>, DefaultOrderedDict([('1', [<app.backoffice.models.Reservation object at 0x7f91c2c5ee10>, <app.backoffice.models.Reservation object at 0x7f91c2c732d0>, <app.backoffice.models.Reservation object at 0x7f91c2c73510>]), ('2', [<app.backoffice.models.Reservation object at 0x7f91c2c73790>, <app.backoffice.models.Reservation object at 0x7f91c32f9c50>]), ('3', [<app.backoffice.models.Reservation object at 0x7f91c2c733d0>, <app.backoffice.models.Reservation object at 0x7f91c2c73490>])]))

{% for zone in data %}
   {{zone}} # 1 | 2 | 3
   {{zone[0]}} # 1 | 2 | 3
{% endfor %}

当您遍历字典(甚至是子类)时,您会得到 如果要遍历嵌套对象,则必须先将该键转换为值:

{% for zone in data %}
    {% for reservation in data[zone] %}
        {{reservation}}
    {% endfor %}
{% endfor %}

由于不显示zone键,因此最好在字典值上循环(使用dict.itervalues()以避免创建冗余列表对象):

{% for reservations in data.itervalues() %}
    {% for reservation in reservations %}
        {{reservation}}
    {% endfor %}
{% endfor %}

或使用dict.iteritems()来获取键和值:

{% for zone, reservations in data.iteritems() %}
    {{zone}}: 
    {% for reservation in reservations %}
        {{reservation}}
    {% endfor %}
{% endfor %}

在您自己的尝试中,仅对每个键设置了zone ,在您的情况下,这些键是单字符字符串( '1''2''3' )。 循环单字符字符串或使用zone[0]对该字符串进行索引只会导致显示该字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM