假设我在django中有以下列表字典:
items = [{'category':'apple','item':'granny smith'},
{'category':'apple','item':'cox'},
{'category':'apple','item':'pixie'},
{'category':'orange','item':'premier'},
{'category':'orange','item':'queen'},
{'category':'orange','item':'westin'},
{'category':'tea','item':'breakfast'},
{'category':'tea','item':'lady grey'},
{'category':'tea','item':'builders'},
{'category':'coffee','item':'colombia'},
{'category':'coffee','item':'kenya'},
{'category':'coffee','item':'brazil'}]如何将其显示在模板中,如:
apple:
granny smith
cox
pixie
orange:
premier
queen
...我应该在视图还是模板中这样做(我指的是逻辑)?如果我只想显示名单的前五个,会发生什么呢?我需要一个不会给我空类别的解决方案
编辑
我必须承认,这是对我的问题的过度简化,我所处理的实际列表已经按照datetime排序如下:
items.sort(key=lambda item:item['created'], reverse=True)发布于 2013-03-07 23:17:57
使用defaultdict按类别分组所有项的解决方案:
from collections import defaultdict
items = [{'category':'apple','item':'granny smith'},
{'category':'apple','item':'cox'},
{'category':'apple','item':'pixie'},
{'category':'orange','item':'premier'},
{'category':'orange','item':'queen'},
{'category':'orange','item':'westin'},
{'category':'tea','item':'breakfast'},
{'category':'tea','item':'lady grey'},
{'category':'tea','item':'builders'},
{'category':'coffee','item':'colombia'},
{'category':'coffee','item':'kenya'},
{'category':'coffee','item':'brazil'}]
result = defaultdict(list)
for item in items:
result[item['category']].append(item['item'])在模板中:
{% for key, values in result.items() %}
<span>{{key}}</span>
<ul>
{% for item in values %}
<li>{{item}}</li>
{% endfor %}
</ul>
{% endfor %}https://stackoverflow.com/questions/15283478
复制相似问题