読者です 読者をやめる 読者になる 読者になる

uokadaの見逃し三振は嫌いです

ここで述べられていることは私の個人的な意見に基づくものであり、私が所属する組織には一切の関係はありません。

pythonでリストのグルーピング

Scala、Java、PHPでソースコードの量を比較してみる | 深追い Fukaoi.org

上の記事に影響されてpythonバージョンを書いてみた。

#!/usr/bin/env python2.7
# -*- coding:utf-8 -*-

if __name__ == '__main__':
    yearMonths = [
             "2009-11", "2009-01",
             "2010-01", "2010-12",
             "2010-01", "2010-04",
             "2010-01", "2010-12",
             "2010-12", "2010-04"
            ]
    from itertools import groupby
    counted = [(i,len(list(k))) for i, k in groupby(sorted(yearMonths))]
    print sorted(counted, cmp=lambda x, y: cmp(x[1], y[1]), reverse=True)

これをdiary.pyで保存。

% python2.7 diary.py 
[('2010-01', 3), ('2010-12', 3), ('2010-04', 2), ('2009-01', 1), ('2009-11', 1)]

実質、3行かな。 リスト内包表記、ラムダ式を使ってるので結構短くなってるかな。

参考
映像奮闘記: Pythonのソートについて: sort()とsorted()
API Only - Stack Exchange