Python 辞書: 構造とハッシュ マップ
Python 辞書をマスターしましょう。キーと値のペアのデータを保存、取得、処理する方法を学びます。マッピングのパフォーマンスとベスト プラクティスを理解します。
概要
辞書はおそらく、Python で最も重要で最適化されたデータ構造です。ディクショナリは、「key:value」ペアに格納されたデータ値の変更可能なコレクションです。実際の辞書を想像すると、「キー」は調べている単語、「値」は定義です。このペアリング構造により、リレーショナル データの取得、更新、管理が驚くほど効率的に行われます。
内部では、Python 辞書は高度に最適化されたハッシュ テーブル (またはハッシュ マップ) として実装されています。これは、キーによる値の取得が「O(1)」定数時間の操作であることを意味します。辞書に 10 項目が含まれているか、1000 万項目が含まれているかに関係なく、Python はコレクション全体をスキャンすることなく、値のメモリ アドレスに即座に直接ジャンプできます。
辞書を定義するには、中かっこ `{}` を使用し、キーと値をコロン `:` で区切ります。キーは不変型 (文字列、整数、タプルなど) である必要があります。つまり、リストを辞書キーとして使用することはできません。ただし、値はリスト、オブジェクト、さらには深くネストされた辞書など、あらゆるものにできるため、JSON のようなデータ構造を表すのに最適です。
値へのアクセスは括弧表記 (例: `user["name"]`) を使用して行われます。ただし、キーが存在しない場合、このアプローチでは「KeyError」がスローされ、プログラムの実行が直ちに停止されます。より安全なコードを記述するために、専門家は `.get()` メソッド (例: `user.get("name")`) を使用します。このメソッドは、キーが欠落している場合は `None` またはカスタムのデフォルト値を適切に返し、不要なクラッシュを防ぎます。
歴史的に、Python 辞書にはまったく順序がありませんでした。ただし、Python 3.7 以降、辞書は挿入順序を維持することが正式に保証されています。これは、`.keys()`、`.values()`、または `.items()` などのメソッドを使用して辞書を反復処理すると、ハッシュ マップの速度とリストの予測可能性を組み合わせて、項目が最初に辞書に追加されたときとまったく同じ順序で返されることを意味します。
コードと実行の出力
ネストされたキーと値のペアを多用してユーザー構成プロファイルを作成します。
user = {
"username": "coder123",
"role": "admin",
"active": True
}
user["last_login"] = "2026-04-10" # Adding a key
print(f"Username is {user['username']}")
# Iterating over key-value pairs
for key, value in user.items():
print(f"{key}: {value}")Username is coder123
username: coder123
role: admin
active: True
last_login: 2026-04-10段階的な実装
- REST APIからのJSON応答の処理
- 一意の ID を大きなデータ オブジェクトにマッピングする
- アプリケーション構成パラメータの保存
よくある質問
存在しないキーにアクセスしようとするとどうなりますか?
括弧表記 (user["name"]) を使用すると、KeyError がスローされます。 user.get("name") を使用して、スローせずに None を返します。
関連トピック
推奨される Python リソース
関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。
Python でリストを並べ替える方法
sort() メソッドとsorted() 関数を使用して、Python でリストを並べ替える方法を学びます。カスタムキーの並べ替えと逆順の例をご覧ください。
Python 文字列メソッドのチートシート
Python 文字列操作の完全なリファレンス ガイド。文字列プロパティの書式設定、検索、分割、置換、チェックをマスターします。
Python と JavaScript: どちらのプログラミング言語が最適ですか?
Python と JavaScript の包括的な比較。構文の違い、パフォーマンス、使用例 (バックエンドとフロントエンド)、およびコーディング例を調べます。