PythonでC++のstd::mapみたいな挙動が欲しい

スポンサーリンク

最近競技プログラミングの問題をちょろちょろやってて、それで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にはありません。

スポンサーリンク

シェアする

フォローする