を使用してみてくださいitertools
。これはリストを日付でグループ化し、キー/グループを反復処理して、最初の要素としてキーと「フラット化された」リスト値を持つリストを作成します。
In [51]: from itertools import groupby
In [52]: result = []
In [53]: for key, group in groupby(l, key=lambda x: x[0]):
....: inner = [key, [item for subg in group for item in subg[1]]]
....: result.append(inner)
....:
....:
In [54]: result
Out[54]:
[['13/03/2012', ['a', 'b', 'c', 'd', 'e', 'f']],
['26/03/2012', ['f']],
['02/04/2012', ['a']],
['09/04/2012', ['b']]]
これをワンライナーで行うこともできますが、80 文字を超えることに加えて、最初のバージョンよりもさらに読みにくくなるため、おそらく避けるべきです :)
In [57]: result = [[key, [item for subg in group for item in subg[1]]] for key, group in groupby(l, key=lambda x: x[0])]
In [58]: result
Out[59]:
[['13/03/2012', ['a', 'b', 'c', 'd', 'e', 'f']],
['26/03/2012', ['f']],
['02/04/2012', ['a']],
['09/04/2012', ['b']]]