defaultdict と Counter の使いどころ
一言まとめ
キーの有無チェックが要る集計は defaultdict、出現回数を数えるだけなら Counter を使う。
素の dict で集計すると、キーの有無を確かめる if が必ず入ります。
groups = {}for word in words: if word[0] not in groups: groups[word[0]] = [] groups[word[0]].append(word)初期化の if を消したいなら defaultdict、数えるだけなら Counter です。
from collections import Counter, defaultdict
groups = defaultdict(list)for word in words: groups[word[0]].append(word)
counts = Counter(words)counts.most_common(3) # [('apple', 4), ('pear', 2), ('fig', 1)]defaultdict は参照しただけでキーが増えます。存在確認のつもりで groups["z"] と書くと空リストが生えるので、確認は in で行います。
更新履歴
- 2026-06-22: 初版(memos から移行)
- 2026-10-09: タイトルを概念名に揃え、tags を補う