我有一组新闻文章对象,我希望按不同的月份显示这些对象。我曾经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 中解决这个问题——我当然可能是错的)
非常感谢。
卢多。