最近競技プログラミングの問題をちょろちょろやってて、それでC++を使ってるんですが、C++のstd::map(pythonのdict的な連想配列コンテナ)は[]で存在しないキーにアクセスすると自動で値のデフォルトコンストラクタでinsertが呼ばれるようになってるので
map<string, int> m;
m["a"]++; // 0が自動的に挿入された後1になる
こんな書き方をしても大丈夫なんですね。
同じことをpythonのdictでやったらエラーになるので何か無いかなーと検索したところ、collections.defaultdictというクラスが同じことをできるようです。
from collections import defaultdict
d = defaultdict(int)
d["a"] += 1
こんな感じで
ちなみにstd::mapは常にキーの昇順でソートされているという特徴もありますがそれはdefaultdictにはありません。
コメント