月ごとにアーカイブされたニュース記事オブジェクトのコレクションを表示したいと考えています。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 を使用しており、regroup を使用していましたが、テンプレートの外側で Python でこれを解決したほうがよいようです - もちろん間違っている可能性があります)
どうもありがとう。
ルード。