【问题标题】:Django Template - How to Iterate and access a dictionary?Django 模板 - 如何迭代和访问字典?
【发布时间】:2013-09-24 09:30:37
【问题描述】:

我有一本字典要遍历,我把它打印在我的网页上并得到了这个:

dict = {
    u'256': <itertools._grouper object at 0x8361d0e90>,
    u'59': <itertools._grouper object at 0x83607c110>,
    u'59': <itertools._grouper object at 0x83607c050>,
    u'1975555': <itertools._grouper object at 0x8361bc490>,
    u'91': <itertools._grouper object at 0x836162110>
}

如何在字典中访问此对象的值? 这是我尝试过的:

{% for code, codelist in dict.items %}
    {% for innerlists in codelist %}
        // Here I want to display the values in the dict's object
    {% endfor %}
{% endfor %}

【问题讨论】:

  • 你能展示你的dict在视图中的样子吗?
  • 在你看来,对你的字典的值做一个list()
  • 你不应该重新定义dict关键字

标签: python django


【解决方案1】:

如果您是itertools.groupby的用户,请注意docs pages中的注释:

返回的组本身是一个迭代器,它与 groupby() 共享底层迭代。因为源是共享的,所以当 groupby() 对象前进时,之前的组不再可见。因此,如果以后需要该数据,则应将其存储为列表

groups = []
uniquekeys = []
data = sorted(data, key=keyfunc)
for k, g in groupby(data, keyfunc):
    groups.append(list(g))      # Store group iterator as a list
    uniquekeys.append(k)

(加粗)

不要使用dict 作为变量名,并且在创建这个字典时,将_grouper 值转换为list。您的模板似乎没有任何问题。

【讨论】:

    【解决方案2】:
    {% for item in dict%}
    //do stuff
    {% endfor %}
    

    应该可以工作,除非你 dict 有一个你想要迭代的嵌套属性“items”。

    【讨论】:

      猜你喜欢
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 2021-04-10
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 2019-02-05
      相关资源
      最近更新 更多