Python 辞書の基礎:キー、値、アクセス方法を完全解説
各キーはコロン(:)で値から区切られ、アイテムはカンマで区切られ、全体は波括弧で囲まれます。アイテムのない空の辞書は、ただ 2 つの波括弧で書きます:{}。
キーは辞書内で一意でなければなりませんが、値は一意である必要はありません。辞書の値は任意の型にできますが、キーは文字列、数値、タプルなどの不変(イミュータブル)なデータ型でなければなりません。
辞書内の値へのアクセス
辞書の要素にアクセスするには、慣れ親しんだ角括弧とキーを使用して値を取得します。シンプルな例:
ライブ デモ#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Name']: ", dict['Name']
print "dict['Age']: ", dict['Age']
上記のコードを実行すると、次の結果が得られます。
dict['Name']: Zara dict['Age']: 7
辞書に含まれないキーでデータアイテムにアクセスしようとすると、次のようなエラーが発生します。
ライブ デモ#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Alice']: ", dict['Alice']
上記のコードを実行すると、次の結果が得られます。
dict['Alice']: Traceback (most recent call last): File "test.py", line 4, inprint "dict['Alice']: ", dict['Alice'] KeyError: 'Alice'
辞書の更新
新しいエントリまたはキー・値ペアを追加したり、既存のエントリを変更したり、既存のエントリを削除したりすることで、辞書を更新できます。シンプルな例:
ライブ デモ#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8 # 既存エントリの更新
dict['School'] = "DPS School" # 新しいエントリの追加
print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']
上記のコードを実行すると、次の結果が得られます。
dict['Age']: 8 dict['School']: DPS School
辞書要素の削除
個々の辞書要素を削除したり、辞書の全内容をクリアしたりできます。また、1 回の操作で辞書全体を削除することもできます。
辞書全体を明示的に削除するには、del 文を使用します。シンプルな例:
ライブ デモ#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name'] # キー 'Name' のエントリを削除
dict.clear() # 辞書のすべてのエントリを削除
del dict # 辞書全体を削除
print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']
次の結果が得られます。del dict の後では辞書が存在しなくなるため、例外が発生します。
dict['Age']: Traceback (most recent call last): File "test.py", line 8, inprint "dict['Age']: ", dict['Age'] TypeError: 'type' object is unsubscriptable
注 — del() メソッドについては後のセクションで説明します。
辞書キーのプロパティ
辞書の値には制限がありません。標準オブジェクトまたはユーザー定義オブジェクトのいずれでも、任意の Python オブジェクトを値として使用できます。しかし、キーについては同じことは言えません。
辞書キーについて覚えておくべき 2 つの重要なポイント:
(a) キーあたり 1 エントリ以上は許可されません。つまり、重複キーは許可されません。代入時に重複キーが検出された場合、最後の代入が優先されます。例:
ライブ デモ#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}
print "dict['Name']: ", dict['Name']
上記のコードを実行すると、次の結果が得られます。
dict['Name']: Manni
(b) キーは不変でなければなりません。つまり、文字列、数値、タプルを辞書キーとして使用できますが、['key'] のようなリストは使用できません。シンプルな例:
#!/usr/bin/python
dict = {['Name']: 'Zara', 'Age': 7}
print "dict['Name']: ", dict['Name']
上記のコードを実行すると、次の結果が得られます。
Traceback (most recent call last): File "test.py", line 3, indict = {['Name']: 'Zara', 'Age': 7} TypeError: unhashable type: 'list'
組み込み辞書関数とメソッド
Python には以下の辞書関数が含まれています。
| 番号 | 関数と説明 |
|---|---|
| 1 | cmp(dict1, dict2) 両方の辞書の要素を比較します。 |
| 2 | len(dict) 辞書の総長を返します。これは辞書内のアイテム数と等しくなります。 |
| 3 | str(dict) 辞書の印刷可能な文字列表現を生成します。 |
| 4 | type(variable) 渡された変数の型を返します。渡された変数が辞書なら、辞書型を返します。 |
Python には以下の辞書メソッドが含まれています。
| 番号 | メソッドと説明 |
|---|---|
| 1 | dict.clear() 辞書 dict のすべての要素を削除 |
| 2 | dict.copy() 辞書 dict の浅いコピーを返す |
| 3 | dict.fromkeys() シーケンスからキーを取得し、値を value に設定した新しい辞書を作成 |
| 4 | dict.get(key, default=None) キー key に対する値を返す。キーが辞書にない場合は default を返す |
| 5 | dict.has_key(key) キーが辞書 dict にあれば true、なければ false を返す |
| 6 | dict.items() 辞書 dict の (キー, 値) タプルペアのリストを返す |
| 7 | dict.keys() 辞書 dict のキーのリストを返す |
| 8 | dict.setdefault(key, default=None) get() に似ているが、key がまだ辞書にない場合は dict[key]=default を設定 |
| 9 | dict.update(dict2) 辞書 dict2 のキー・値ペアを dict に追加 |
| 10 | dict.values() 辞書 dict の値のリストを返す |
Python
- Python データ型マスター: 実践ガイド
- Python 演算子完全マスター: 包括的ガイド
- Python pass文完全マスター: 実践ガイド
- Python 関数引数完全マスター: 位置引数・キーワード引数・デフォルト引数
- Python辞書完全ガイド:作成、操作、高度なテクニック
- Pythonイテレータ完全ガイド:仕組みと自作方法
- Pythonクロージャ解説:ネスト関数が変数を捕捉する仕組み
- Python datetimeマスター:日付・時刻・タイムゾーン実践ガイド
- Python 概要:高水準、読みやすい、インタラクティブ、オブジェクト指向
- Python 数値型完全ガイド:不変な数値データ型の理解と活用
- Python 文字列完全マスター:作成、アクセス、操作のすべて