2011年7月18日月曜日

collectionsモジュール

EuroPython 2011 のレポートを見て知ったのですが、python 2.7 で Counter というクラスが追加されているんですね。

リスト内の要素数をカウントしたい時、こんな感じで書いていましたが、
>>> cnt = {}
>>> for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
...     cnt[word] = cnt.get(word, 0) + 1
...
>>> cnt
{'blue': 3, 'green': 1, 'red': 2}

Counter を使うとこんな感じで書けます。
>>> from collections import Counter
>>> cnt = Counter()
>>> for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
...     cnt[word] += 1
... 
>>> cnt
Counter({'blue': 3, 'red': 2, 'green': 1})

すっきりしていて、いいですね。

0 件のコメント:

コメントを投稿