我有一系列新闻文章对象,我希望以不同的月份存档。我使用itertools.groupby
创建了一个以这种方式排序的Python对象列表:
news_grouped = [
{'date': key, 'list': list(val)}
for key, val in groupby(obj_list,
(lambda v: datetime.datetime(v.pub_date.year,
v.pub_date.month, 1)))
]
所以我最终得到了一个像:
这样的集合[{'date': datetime.datetime(2011, 1, 1, 0, 0),
'list': [<News: A January Article>, <News: Another January Article>]},
{'date': datetime.datetime(2010, 12, 1, 0, 0),
'list': [<News: Happy Xmas>]},
{'date': datetime.datetime(2010, 10, 1, 0, 0),
'list': [<News: Halloween>]},
{'date': datetime.datetime(2010, 1, 1, 0, 0),
'list': [<News: Old old old Jan 2010>]}]
我想填写news_grouped集合,以便在最早的文章和今天的日期之间包含每个月的条目,空的列表只有一个空列表。
我意识到我可以通过从最早的日期到最新的日期迭代,并填充集合来实现这一点,但是有些事情并不适合我,我认为它也不是很有效。
有更优雅的解决方法吗?有人能指点我吗?
(我实际上正在使用Django并且正在使用重新组合,但似乎我在模板之外的python中更好地解决这个问题 - 我当然可能是错的)
非常感谢。
鲁
答案 0 :(得分:0)
正如Space_C0wb0y所建议的那样去一本字典,如果你喜欢使用自2.7以来属于集合模块的有序字典。