0Pricing
Coding Interview Prep · レッスン

Counter と defaultdict の実践

キー不足エラーを避けて項目を集計します

「Counter と defaultdict の実践」はCoddyKit上の無料Coding Interview Prepレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCoding Interview Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Coding Interview Prepコースには全4レッスンが含まれています。

カウントを簡単にする

出現回数を数える処理は、競技プログラミングのいたるところで登場します。collections モジュールには、カウントを簡単にする2つのツールがあります。🧮

存在しないキーの問題

通常の dict では、まだ存在しないキーを増分すると KeyError が発生します。専用のデータ構造を使えば、この手間をなくせます。

Counter を使う

Counter を使うと、任意の iterable の出現回数を1行で数えられ、各要素の頻度が値として格納されます。存在しないキーは単に0として扱われます。

from collections import Counter
freq = Counter(nums)

カウントを読み取る

Counter は dict と同じようにインデックス指定できますが、存在しないキーを読み取るとクラッシュする代わりに 0 を返します。そのため、検索を完全に安全に行えます。

print(freq[5])
print(freq[999])

最も多い要素

most_common を呼び出すと、カウントの多い順に要素を取得できます。数値を渡すと、上位から取得する件数を制限できます。

top3 = freq.most_common(3)

Counter で計算する

2つの Counter を加算または減算して、カウントを統合できます。同じキーをまとめ、合計を自動的に揃えてくれます。

total = Counter(a) + Counter(b)

defaultdict を使う

defaultdict は新しいキーに対して新しいデフォルト値を用意するため、最初に存在確認をする必要がありません。デフォルトファクトリを渡して作成します。

from collections import defaultdict
count = defaultdict(int)

ガードなしで増分する

defaultdict(int) では、存在しないキーが0から始まるため、直接増分できます。ループ内に if-in による確認を記述する必要はありません。

for v in nums:
    count[v] += 1

デフォルトでリストを使う

各キーに複数の値を集める場合は defaultdict(list) を使います。新しいキーに追加すると、自動的に空のリストから始まります。

groups = defaultdict(list)
groups[key].append(item)

Counter と defaultdict の使い分け

要素を数えるだけなら Counter を使い、各キーにリストや set、カスタムのデフォルト値が必要なら defaultdict を使います。🎯

1行でアナグラムを判定する

2つの単語は、それぞれの Counter が等しい場合に限ってアナグラムです。この比較で、すべての文字の出現頻度を一度に確認できます。

is_anagram = Counter(s) == Counter(t)

クイックチェック

存在しないキーでも安全に増分しながら、出現回数を数えたいとします。

まとめ

Counter は要素を即座に集計して順位付けし、defaultdict はカウント、リスト、set の処理で存在しないキーの確認を省けます。どちらも定型コードを減らしてくれます。🚀

よくある質問

「Counter と defaultdict の実践」レッスンは無料ですか?

はい。「Counter と defaultdict の実践」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Coding Interview Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Coding Interview Prepコースには全4レッスンが含まれています。

「Counter と defaultdict の実践」で何を学びますか?

キー不足エラーを避けて項目を集計します ブラウザで直接実行するハンズオンコードでCoding Interview Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Coding Interview Prepを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCoding Interview Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「Counter と defaultdict の実践」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCoding Interview Prepレッスンでコードを書いて実行できますか?

はい。すべてのCoding Interview Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 所属判定と重複排除のための集合
  2. ルックアップテーブルとしての辞書
  3. Counter と defaultdict の実践
  4. Map でグループ化とバケット分け
← Coding Interview Prepに戻る