使用Django应用程序。我有一个列表ads
,我希望能够过滤这些模板(例如,抓住spot_id = 1
的所有广告,然后选择一个随机的Python:如何按类别对这个项目列表进行分组?
我通过光标,而不是Django的神秘使用原始SQL 。查询,所以我已经有我的名单(转换成字典)这是我到目前为止有:。
# list/dict of ads
[
{'filename': u'rc_ad_06_02_11.gif', 'spot_id': 1L },
{'filename': u'k_banner.jpg', 'spot_id': 1L},
{'filename': u'dwarves-banner.gif', 'spot_id': 1L},
{'filename': u'k_skyscraper.jpg', 'spot_id': 2L }
]
# attempt to group them somehow
final_ads = []
last_spot_id = 0
for a in ads:
if a['spot_id'] != last_spot_id:
final_ads[a['spot_id']][] = a # syntax error here
last_spot_id = a['spot_id']
logger.info(final_ads)
这不起作用什么我基本上是试图去是这样的一个列表的结构:
[
1: [
{'filename': u'rc_ad_06_02_11.gif', 'spot_id': 1L },
{'filename': u'k_banner.jpg', 'spot_id': 1L},
{'filename': u'dwarves-banner.gif', 'spot_id': 1L}
],
2: [
{'filename': u'k_skyscraper.jpg', 'spot_id': 2L }
]
]
(想不到合适的代表这种方式,抱歉,如果它看起来不正确)。
如果任何人都可以告诉我一个更明智的做法,我会非常感激。谢谢。
很多好的答案在这里,但接受这一个,因为它是最接近我的精神是什么试图去做(关于'setdefault'的很好的提示,正在努力如何动态实现这一点)。 – 2012-08-09 21:40:31