ルックアップテーブルとしての辞書
キーを値に対応付けて高速にアクセスします
「ルックアップテーブルとしての辞書」はCoddyKit上の無料Competitive Programming Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCompetitive Programming Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Competitive Programming Academyコースには全4レッスンが含まれています。
辞書という考え方
辞書はキーを値に対応付けるため、全体を検索する代わりに名前で保存済みの答えを取得できます。競技プログラミングで使う検索テーブルです。🔑
定数時間アクセス
set と同様に、dict はキーをハッシュ化するため、読み書きはおおむね O(1) です。この速さが、遅い線形探索の代わりに dict を使う理由です。
辞書を作成する
波括弧の中にキーと値のペアを記述するか、空の波括弧だけで空の辞書を作成します。各キーは必ず1つの値を指します。
age = {'amy': 21, 'bob': 19}
empty = {}キーで読み取る
キーを角括弧で囲んで値を取得します。キーはインデックスのように機能しますが、文字列、数値、タプルを使うこともできます。
print(age['amy'])存在しないキーでクラッシュする
角括弧で存在しないキーを読み取ると KeyError が発生します。競技プログラミングでは、即座に実行時エラーの判定になります。
get による安全な読み取り
キーが存在しないときにクラッシュする代わりにデフォルト値を返すには get を使います。存在しない可能性のあるキーを安全に読み取る方法です。
count = age.get('zoe', 0)挿入と更新
キーに値を代入すると、そのキーが追加されるか、古い値が上書きされます。同じ構文で挿入と更新の両方を処理できます。
age['cara'] = 25
age['amy'] = 22読み取る前に確認する
キーを使う前に in で存在を確認します。これにより KeyError を防ぎ、処理の意図も明確になります。
if 'bob' in age:
print(age['bob'])値を位置に対応付ける
よく使う方法として、各値のインデックスを保存しておき、後からその位置を1回の操作で検索できるようにします。ペアを探す問題に適しています。
pos = {}
for i, v in enumerate(nums):
pos[v] = iペアをループする
items を使うと、キーと値を同時に反復処理できます。ループ内で各値をもう一度検索するよりも、すっきり記述できます。
for name, a in age.items():
print(name, a)キーはハッシュ可能である必要がある
辞書のキーはハッシュ可能である必要があるため、数値、文字列、タプルを使います。リストはキーにできませんが、整数のタプルならキーにできます。
seen = {(0, 0): 'start'}クイックチェック
存在しない可能性のあるキーを、クラッシュせずに読み取りたいとします。
まとめ
辞書はキーを値に対応付け、O(1) で検索できます。安全に読み取るときは get を使い、インデックスを保存して遅い探索を即座に答えられる処理に変えましょう。🚀
よくある質問
「ルックアップテーブルとしての辞書」レッスンは無料ですか?
はい。「ルックアップテーブルとしての辞書」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Competitive Programming Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Competitive Programming Academyコースには全4レッスンが含まれています。
「ルックアップテーブルとしての辞書」で何を学びますか?
キーを値に対応付けて高速にアクセスします ブラウザで直接実行するハンズオンコードでCompetitive Programming Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Competitive Programming Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCompetitive Programming Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「ルックアップテーブルとしての辞書」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCompetitive Programming Academyレッスンでコードを書いて実行できますか?
はい。すべてのCompetitive Programming Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 所属判定と重複排除のための集合
- ルックアップテーブルとしての辞書
- Counter と defaultdict の実践
- Map でグループ化とバケット分け