プログラミング

Python辞書の完全ガイド

Python 3における「辞書(Dictionary)」は、非常に強力で柔軟なデータ構造であり、キーと値のペアを格納するためのコンテナです。辞書は、他の多くのプログラミング言語で見られる「連想配列」や「ハッシュマップ」に相当します。Pythonの辞書は、データを効率的に管理・検索するための重要なツールです。

この記事では、Python 3における辞書の基本から応用までを包括的に説明し、その使い方を深く理解できるようにします。

1. 辞書の基本

Pythonの辞書は、{}(中括弧)を使って作成されます。辞書は、キーと値を1対1の関係で管理します。キーはユニークでなければならず、値には任意のデータ型を使用できます。

辞書の作成

python
# 空の辞書を作成 my_dict = {} # キーと値を含む辞書を作成 person = {"name": "Taro", "age": 25, "city": "Tokyo"}

上記の例では、"name", "age", "city" がキーで、これに対応する値としてそれぞれ "Taro", 25, "Tokyo" が設定されています。

辞書のデータ型

辞書のキーは、変更不可(イミュータブル)なデータ型にする必要があります。一般的には、文字列、整数、タプルなどが使用されます。一方、値は変更可能(ミュータブル)なオブジェクトを含んでも構いません。例えば、リストや他の辞書を値として格納することができます。

python
my_dict = {1: "apple", 2: "banana", "a": [1, 2, 3]}

2. 辞書のアクセス方法

辞書に格納された値には、キーを使ってアクセスします。辞書から値を取り出すには、キーを指定してアクセスします。

値の取得

python
person = {"name": "Taro", "age": 25, "city": "Tokyo"} # 'name' キーに対応する値を取得 print(person["name"]) # 出力: Taro # 存在しないキーにアクセスするとエラーになる # print(person["address"]) # KeyError: 'address'

get()メソッドを使ったアクセス

get() メソッドは、キーが存在しない場合にエラーを発生させず、代わりに None を返すか、指定したデフォルト値を返すことができます。

python
# 'address' キーがない場合、Noneが返される print(person.get("address")) # 出力: None # 'address' キーがない場合、デフォルト値を設定することも可能 print(person.get("address", "Unknown")) # 出力: Unknown

3. 辞書の更新と削除

辞書の値を更新したり、辞書自体から項目を削除したりすることができます。

値の更新

python
person = {"name": "Taro", "age": 25, "city": "Tokyo"} # 'age' キーの値を更新 person["age"] = 26 print(person) # 出力: {'name': 'Taro', 'age': 26, 'city': 'Tokyo'}

新しいキーと値の追加

辞書に新しい項目を追加するには、単純にキーと値を指定します。

python
person["address"] = "Shibuya" print(person) # 出力: {'name': 'Taro', 'age': 26, 'city': 'Tokyo', 'address': 'Shibuya'}

要素の削除

del キーワードを使って辞書からキーと値のペアを削除することができます。

python
del person["city"] print(person) # 出力: {'name': 'Taro', 'age': 26, 'address': 'Shibuya'}

また、pop() メソッドを使って、削除した値を取得することもできます。

python
address = person.pop("address") print(address) # 出力: Shibuya print(person) # 出力: {'name': 'Taro', 'age': 26}

4. 辞書のループ

辞書の全ての要素をループで処理することができます。Pythonでは、辞書のキー、値、またはキーと値のペアを直接ループすることができます。

キーのループ

python
person = {"name": "Taro", "age": 26, "city": "Tokyo"} for key in person: print(key) # 出力: # name # age # city

値のループ

python
for value in person.values(): print(value) # 出力: # Taro # 26 # Tokyo

キーと値のペアのループ

python
for key, value in person.items(): print(f"{key}: {value}") # 出力: # name: Taro # age: 26 # city: Tokyo

5. 辞書の演算

Pythonの辞書は、他のデータ構造と組み合わせて使用することができます。また、辞書同士の演算も可能です。

辞書の結合

複数の辞書を結合するには、update() メソッドを使います。これにより、1つの辞書にもう1つの辞書を追加できます。

python
dict1 = {"name": "Taro", "age": 25} dict2 = {"city": "Tokyo", "address": "Shibuya"} dict1.update(dict2) print(dict1) # 出力: {'name': 'Taro', 'age': 25, 'city': 'Tokyo', 'address': 'Shibuya'}

辞書のコピー

辞書をコピーするには、copy() メソッドを使用します。これにより、元の辞書を変更してもコピーした辞書は影響を受けません。

python
person_copy = person.copy() person_copy["age"] = 30 print(person) # 出力: {'name': 'Taro', 'age': 26, 'city': 'Tokyo'} print(person_copy) # 出力: {'name': 'Taro', 'age': 30, 'city': 'Tokyo'}

6. 辞書の内包表記

Pythonでは、辞書の内包表記を使って、簡潔に辞書を作成したり変換したりすることができます。

辞書内包表記の例

python
# 値を2倍にする新しい辞書を作成 numbers = {"a": 1, "b": 2, "c": 3} doubled = {key: value * 2 for key, value in numbers.items()} print(doubled) # 出力: {'a': 2, 'b': 4, 'c': 6}

7. よく使われる辞書メソッド

Pythonの辞書には、便利なメソッドがいくつか用意されています。

  • keys(): 辞書の全てのキーを返します。

  • values(): 辞書の全ての値を返します。

  • items(): 辞書の全てのキーと値のペアを返します。

  • popitem(): ランダムにキーと値のペアを削除して返します。

  • clear(): 辞書の全ての要素を削除します。

まとめ

Pythonの辞書は非常に強力で便利なデータ構造です。キーと値のペアを効率的に管理でき、データの追加、削除、更新が容易に行えます。また、辞書の値に他のオブジェクトやデータ型を含めることもでき、柔軟性に優れています。辞書をうまく活用することで、Pythonプログラムの可読性と効率を大きく向上させることができます。

Back to top button