defaultdict と Counter の使いどころ

一言まとめ

キーの有無チェックが要る集計は defaultdict、出現回数を数えるだけなら Counter を使う。

作成 · 更新 · #python#collections

素の 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 を補う

同じトピック — Python