pythonのdefaultdictが便利な件

あるリストを頻度順にカウントすることが多かったのだけど、
いままで頑張ってたことが一瞬で済む方法。
dafaultdictを使うとvalueのデフォルト値を指定できる。
例えばゼロ(つまりint)とか。
そうすると、いままでこう書いてたものが、

#! /usr/bin/env python
# -*- coding: utf-8 -*-

fruit = ['strawberry','grape','orange','strawberry','grape']
dict = {}
for f in fruit:
    if f in dict.keys(): #キーが初回登録時と2回目以降で場合分けする
        val = dict[f]
        val += 1
        dict[f] = val
    else:
        dict[f] = 1
print sorted(dict.items(),key=lambda x:x[1], reverse=True)

これで書ける。

#! /usr/bin/env python
# -*- coding: utf-8 -*-

from collections import defaultdict
fruit = ['strawberry','grape','orange','strawberry','grape']
d = defaultdict(int)
for f in fruit:
    d[f] += 1 #デフォルト値がintで初期化されているのでインクリメントできる
print sorted(d, key = lambda x:x[1], reverse=True)

便利です。