【完全網羅】Python dictについて

# はじめに
Pythonのdictについて自分なりに理解を深め、復習するための学習ノート的なものです。
同じように勉強したい方にとって参考になれば幸いです。
# dictとは
Pythonにおけるdictは、辞書（Dictionary）とも呼ばれるデータ構造です。dictは、キー（Key）と値（Value）のペアを格納することができます。キーは一意であり、それに対応する値を迅速に検索することができます。

dictは波括弧 {} を使用して作成され、キーと値はコロン : を使用して区切ります。以下は、dictの基本的な構文です。
```Python:Python
my_dict = {key1: value1, key2: value2, key3: value3}
```

ここで、key1、key2、key3はキーであり、value1、value2、value3はそれぞれのキーに対応する値です。キーと値のペアはカンマ , で区切られます。

dictのキーは一意である必要があります。つまり、同じキーを複数回使用することはできません。ただし、値は重複していても構いません。

# 基本操作
### 要素の追加・更新

dictに要素を追加または更新するには、キーを指定して値を代入します。

```python:Python
my_dict = {}
my_dict[key] = value  # 要素の追加または更新
```
### 要素の取得

dictから要素を取得するには、キーを指定してアクセスします。

```python:Python
value = my_dict[key]  # 要素の取得
```
もし存在しないキーを指定した場合、KeyErrorが発生します。この場合、キーが存在するかどうかを事前にチェックすることができます。

```python:Python
if key in my_dict:
    value = my_dict[key]
else:
    # キーが存在しない場合の処理
```

または、get()メソッドを使用してキーが存在しない場合のデフォルト値を指定することもできます。

```python:Python
Copy code
value = my_dict.get(key, default_value)  # キーが存在しない場合は default_value を返す
```

### 要素の削除

dictから要素を削除するには、del文を使用します。

```python:Python
del my_dict[key]  # 要素の削除
```

### 要素の存在チェック

キーがdictに存在するかどうかを確認するには、in演算子を使用します。

```python:Python
if key in my_dict:
    # キーが存在する場合の処理
```


# よく使われるメソッド

### keys()
辞書のキーを取得します。
```python:Python
my_dict = {"name": "John", "age": 25, "city": "Tokyo"}
keys = my_dict.keys()
print(keys)  # 出力: dict_keys(['name', 'age', 'city'])
```

### values()
辞書の値を取得します。
```python:Python
my_dict = {"name": "John", "age": 25, "city": "Tokyo"}
values = my_dict.values()
print(values)  # 出力: dict_values(['John', 25, 'Tokyo'])
```

### items()
辞書のキーと値のペアを取得します。

```python:Python
my_dict = {"name": "John", "age": 25, "city": "Tokyo"}
items = my_dict.items()
print(items)  # 出力: dict_items([('name', 'John'), ('age', 25), ('city', 'Tokyo')])
```

### get(key, default)
指定したキーに対応する値を取得します。キーが存在しない場合はデフォルト値を返します。

```python:Python
my_dict = {"name": "John", "age": 25, "city": "Tokyo"}
name = my_dict.get("name", "Unknown")
country = my_dict.get("country", "Unknown")
print(name)  # 出力: John
print(country)  # 出力: Unknown
```

### pop(key, default)
指定したキーに対応する値を取り出し、辞書から削除します。キーが存在しない場合はデフォルト値を返します。

```python:Python
my_dict = {"name": "John", "age": 25, "city": "Tokyo"}
age = my_dict.pop("age", None)
country = my_dict.pop("country", "Unknown")
print(age)  # 出力: 25
print(country)  # 出力: Unknown
print(my_dict)  # 出力: {'name': 'John', 'city': 'Tokyo'}
```

### update(other_dict)
別の辞書またはキーと値のペアのコレクションで辞書を更新します。

```python:Python
my_dict = {"name": "John", "age": 25, "city": "Tokyo"}
other_dict = {"country": "Japan", "age": 26}
my_dict.update(other_dict)
print(my_dict)  # 出力: {'name': 'John', 'age': 26, 'city': 'Tokyo', 'country': 'Japan'}
```

### clear()
辞書のすべてのキーと値を削除し、空の辞書にします。

```python:Python
my_dict = {"name": "John", "age": 25, "city": "Tokyo"}
my_dict.clear()
print(my_dict)  # 出力: {}
```

### copy()
辞書の浅いコピーを作成します。新しい辞書オブジェクトが作成され、元の辞書とは別のメモリ領域に格納されます。

```python:Python
my_dict = {"name": "John", "age": 25, "city": "Tokyo"}
new_dict = my_dict.copy()
print(new_dict)  # 出力: {'name': 'John', 'age': 25, 'city': 'Tokyo'}
```

### setdefault(key, default)
指定したキーに対応する値を取得します。キーが存在しない場合はキーとデフォルト値を辞書に追加します。

```python:Python
my_dict = {"name": "John", "age": 25, "city": "Tokyo"}
name = my_dict.setdefault("name", "Unknown")
country = my_dict.setdefault("country", "Japan")
print(name)  # 出力: John
print(country)  # 出力: Japan
print(my_dict)  # 出力: {'name': 'John', 'age': 25, 'city': 'Tokyo', 'country': 'Japan'}
```

### len()
辞書内のキーの数を返します。

```python:Python
my_dict = {"name": "John", "age": 25, "city": "Tokyo"}
length = len(my_dict)
print(length)  # 出力: 3
```

### in キーワード
キーの存在を確認します。

```python:Python
my_dict = {"name": "John", "age": 25, "city": "Tokyo"}
if "name" in my_dict:
    print("キー 'name' が存在します。")
```

### dict.fromkeys(keys, value)
指定されたキーのリストから辞書を作成し、すべてのキーに指定された値を割り当てます。

```python:Python
keys = ["name", "age", "city"]
default_value = "Unknown"
my_dict = dict.fromkeys(keys, default_value)
print(my_dict)  # 出力: {'name': 'Unknown', 'age': 'Unknown', 'city': 'Unknown'}
```

### dict.popitem()
辞書からランダムなキーと値のペアを取り出し、そのペアを削除します。

```python:Python
my_dict = {"name": "John", "age": 25, "city": "Tokyo"}
key, value = my_dict.popitem()
print(key, value)  # 出力: 任意のキーと値のペア
print(my_dict)  # 出力: 削除されたペアを除いた辞書
```

### dict.setdefault(key, default)
setdefault() メソッドと同様ですが、新しいキーと値を辞書に追加します。

```python:Python
my_dict = {"name": "John", "age": 25, "city": "Tokyo"}
country = my_dict.setdefault("country", "Japan")
print(country)  # 出力: Japan
print(my_dict)  # 出力: {'name': 'John', 'age': 25, 'city': 'Tokyo', 'country': 'Japan'}
```
# 最後に
これらのメソッドを使うことで、辞書の操作やデータの取得・変更が容易になります。辞書はPythonにおいて非常に便利なデータ構造です。
ぜひ理解を深め、自由自在に扱えるレベルまで持っていきましょう。

# （おまけ）Pythonの勉強をさらっとしたい人へのおすすめ
https://click.linksynergy.com/deeplink?id=fV/2pKasu8A&mid=47984&murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fpython-beginner%2F%3FcouponCode%3D24T7MT72224