
スポンサーリンク
Pythonでデータを柔軟かつ効率的に扱いたいなら、辞書型(dict)の理解は欠かせません。本記事では、辞書型の基本構文から安全なアクセス方法、ループ処理、内包表記、ネスト構造、さらにはJSONとの連携までを、初心者にもわかりやすく丁寧に解説します。実用的なコード例を交えながら、辞書型の持つ力を最大限に引き出すための知識を身につけましょう。
辞書型はキーと値のペアを管理するデータ構造
Pythonの辞書型(dict)は、キーと値のペアを管理するデータ構造で、リストやタプルと並ぶ基本的なデータ型の一つです。キーを使って値にアクセスできるため、高速なデータ検索や管理が可能です。辞書型はJSONフォーマットとの親和性が高く、JavaScriptをはじめとする他のプログラミング言語とのデータ交換も簡単に行えます。
例えば、ユーザー情報を管理する際に、名前、年齢、住所などの属性と、それぞれの実際の値を関連付けて保存できます。そのため、Web開発、API連携、設定ファイルの管理といった幅広い用途で活用されています。
辞書の作成とデータアクセス
辞書は波括弧 {}
を使って作成し、キーと値はコロン :
で結びます。以下は基本的な辞書の作成例です。
# 辞書の作成user_info = {"name": "山田太郎", "age": 30, "city": "東京"}print(user_info) # => {'name': '山田太郎', 'age': 30, 'city': '東京'}
キーを指定して特定の値を取得するには、対応するキーを角括弧 []
で指定します。
# 辞書の作成user_info = {"name": "山田太郎", "age": 30, "city": "東京"}# 値の取得print(user_info["name"]) # => 山田太郎
ただし存在しないキーを指定すると KeyError
が発生します。
person = {"name": "Alice", "age": 25, "city": "Tokyo"}print(person["job"]) # 出力: KeyError: 'job'
辞書のデータ取得(get)
存在しないキーにアクセスしようとするとKeyError
が発生しますが、get()
メソッドを使用すれば、デフォルト値を指定してエラーを回避できます。
person = {"name": "Alice", "age": 25, "city": "Tokyo"}print(person.get("name", "未設定")) # 出力: Aliceprint(person.get("age", "未設定")) # 出力: 25print(person.get("city", "未設定")) # 出力: Tokyoprint(person.get("job", "未設定")) # 出力: 未設定
辞書のデータを追加・更新する
辞書は動的にキーと値のペアを追加でき、既存のキーに対しては値を更新することができます。
person = {"name": "Alice", "age": 25, "city": "Tokyo"}person["job"] = "Engineer" # 新しいキーと値を追加person["age"] = 26 # 既存の値を更新print(person) # 出力: {'name': 'Alice', 'age': 26, 'city': 'Tokyo', 'job': 'Engineer'}
辞書のキー存在確認(in)
辞書に特定のキーが存在するかどうかは、in
演算子で確認できます。条件分岐と組み合わせることで、より安全なコードを書くことができます。
person = {"name": "Alice", "age": 25, "city": "Tokyo"}if "name" in person: print("名前が登録されています。") # 出力: 名前が登録されています。
辞書のデータ削除(del,pop)
不要になったデータは del
文や pop()
メソッドで削除できます。pop()
メソッドは削除と同時に値を取得できる点が便利です。
person = {'name': 'Alice', 'age': 26, 'city': 'Tokyo', 'job': 'Engineer'}del person["city"]print(person) # 出力: {'name': 'Alice', 'age': 26, 'job': 'Engineer'}
job = person.pop("job") # 削除しつつ値を取得print(job) # 出力: Engineerprint(person) # 出力: {'name': 'Alice', 'age': 26}
辞書の繰り返し処理(for)
辞書はイテレータブルなオブジェクトなので、for
ループを使ってキー、値、またはその両方を順次処理できます。
person = {'name': 'Alice', 'age': 26}# キーを取得してループ処理for key in person.keys(): print(key) # 出力: name, age
# 値を取得してループ処理for value in person.values(): print(value) # 出力: Alice, 26
# キーと値のペアを取得してループ処理for key, value in person.items(): print(f"{key}: {value}") # 出力: name: Alice, age: 26
Python辞書型の応用的な使い方
辞書のソート方法
Pythonでは辞書をそのままソートすることはできませんが、sorted()
関数と辞書のメソッドを組み合わせることで、キーや値に基づいてソートされた新しいリストや辞書を作ることができます。
辞書をキーでソート
data = {"b": 3, "a": 1, "c": 2}sorted_keys = sorted(data.items())print(dict(sorted_keys)) # => {'a': 1, 'b': 3, 'c': 2}
辞書を値でソート
data = {"b": 3, "a": 1, "c": 2}sorted_values = sorted(data.items(), key=lambda x: x[1])print(dict(sorted_values)) # => {'a': 1, 'c': 2, 'b': 3}
辞書のソートは表示順を整えたいときや、値の大小を基準に並べたいときに便利です。
内包表記による辞書の作成
辞書内包表記を使用することで、簡潔で読みやすいコードで辞書を生成できます。
# キーと値の2乗を持つ辞書を作成squares = {x: x**2 for x in range(1, 6)}print(squares) # 出力: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
条件を指定してフィルタリングも可能です。
# 偶数のキーのみを持つ辞書を作成even_squares = {x: x**2 for x in range(1, 11) if x % 2 == 0}print(even_squares) # 出力: {2: 4, 4: 16, 6: 36, 8: 64, 10: 100}
辞書をネストする
辞書はネスト(入れ子構造)やリストと組み合わせることで、より複雑なデータ構造を作成できます。辞書の値として別の辞書を設定することで、階層的な情報を効率的に管理できます。
students = { "Alice": {"age": 25, "city": "Tokyo"}, "Bob": {"age": 30, "city": "Osaka"}}print(students["Alice"]["city"]) # 出力: Tokyoprint(students["Bob"]["age"]) # 出力: 30
また、複数の辞書をリストとしてまとめることで、一覧データを構造化することができます。
people = [ {"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]for person in people: print(person["name"]) # 出力: Alice, Bob print(person["age"]) # 出力: 25, 30
辞書とJSONを組み合わせる
Pythonの辞書型は、JSON形式との相互変換が容易であり、API通信やデータの保存・読み込みに活用されます。json.dumps()
を使って辞書を文字列に変換し、json.loads()
で再度辞書に戻すことができます。
import json
# 辞書をJSON文字列に変換person_dict = {"name": "Alice", "age": 25, "city": "Tokyo"}json_str = json.dumps(person_dict, ensure_ascii=False)print(json_str) # 出力: {"name": "Alice", "age": 25, "city": "Tokyo"}
# JSON文字列を辞書に変換person_dict_loaded = json.loads(json_str)print(person_dict_loaded["name"]) # 出力: Alice
このように、辞書型とJSONを組み合わせることで、データのシリアライズやストレージ管理が容易になります。
また、JSONファイルを保存・読み込みすることも可能です。json.dump()
で書き込み、json.load()
で読み込みます。
import json
person_dict = {"name": "Alice", "age": 25, "city": "Tokyo"}# JSONファイルに書き込みwith open("data.json", "w", encoding="utf-8") as f: json.dump(person_dict, f, ensure_ascii=False, indent=4)
# JSONファイルを読み込みwith open("data.json", "r", encoding="utf-8") as f: data = json.load(f)print(data["city"]) # 出力: Tokyo
Python辞書まとめ
- Pythonの辞書型は、データの管理や検索に便利なデータ構造です。
- 辞書内包表記を活用すると、シンプルかつ効率的なコードを書くことができます。
- JSONとの相互変換が容易なため、APIやデータ処理の場面でも活躍します。
Pythonで扱うデータが複雑になるほど、辞書型の重要性も増していきます。基本操作や応用方法を理解することで、効率的なプログラムを書くことが可能になります。辞書型の使い方を身につけて、コードの品質と可読性を向上させていきましょう。
Pythonユーザにお勧めの本
![]() |
スッキリわかるPython入門 第2版
新品価格
|

![]() |
新品価格
|

![]() |
VTuberサプーが教える! Python
新品価格
|

![]() |
Python1年生 第2版
新品価格
|

以上で本記事の解説を終わります。
よいITライフを!