😸

Pythonの初心者レッスンーーPython辞書型(dict)

2024/06/18に公開

シーリズの目次

Pythonの初心者レッスンをここにまとめています。
https://zenn.dev/datasciencekun/articles/319e0f4b4021c5

Pythonの辞書型(dict)は、キーと値のペアを格納するデータ構造です。辞書は変更可能(ミュータブル)で、キーは一意でなければなりませんが、値は重複しても構いません。辞書は以下の特徴を持っています。

  1. キーと値のペア: 辞書はキーと値のペアを持ちます。キーを使って対応する値にアクセスします。
  2. 順序: Python 3.7以降では、辞書の要素は挿入された順序を保持します。
  3. 変更可能: 辞書は作成後に要素の追加、変更、削除が可能です。
d = {key1 : value1, key2 : value2, key3 : value3 }

辞書の作成

辞書は波括弧{}を使って作成します。キーと値はコロン:で区切り、ペアはカンマ,で区切ります。

# 空の辞書
empty_dict = {}

# 空の辞書
emptyDict = dict()

# キーと値を持つ辞書
person = {"name": "Alice", "age": 25, "city": "New York"}

tinydict = {'name': 'runoob', 'likes': 123, 'url': 'www.runoob.com'}

辞書のアクセス

キーを使って値にアクセスします。存在しないキーにアクセスするとエラーが発生します。

print(person["name"])  # Alice
print(person["age"])   # 25

# 存在しないキーにアクセスするとエラー
# print(person["address"])  # KeyError: 'address'

辞書の操作

要素の追加と更新

辞書に新しいキーと値を追加したり、既存のキーの値を更新したりできます。

# 要素の追加
person["address"] = "123 Main St"
print(person)  # {'name': 'Alice', 'age': 25, 'city': 'New York', 'address': '123 Main St'}

# 要素の更新
person["age"] = 26
print(person)  # {'name': 'Alice', 'age': 26, 'city': 'New York', 'address': '123 Main St'}

要素の削除

delステートメントやpop()メソッドを使って要素を削除します。

# delステートメントを使って削除
del person["city"]
print(person)  # {'name': 'Alice', 'age': 26, 'address': '123 Main St'}

# pop()メソッドを使って削除
address = person.pop("address")
print(address)  # 123 Main St
print(person)   # {'name': 'Alice', 'age': 26}

辞書のメソッド

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

# keys()メソッド:辞書の全てのキーを取得
keys = person.keys()
print(keys)  # dict_keys(['name', 'age'])

# values()メソッド:辞書の全ての値を取得
values = person.values()
print(values)  # dict_values(['Alice', 26])

# items()メソッド:辞書の全てのキーと値のペアを取得
items = person.items()
print(items)  # dict_items([('name', 'Alice'), ('age', 26)])

# get()メソッド:キーを指定して値を取得、キーが存在しない場合にデフォルト値を返す
name = person.get("name")
print(name)  # Alice

address = person.get("address", "Not Found")
print(address)  # Not Found

辞書の反復処理

辞書のキー、値、またはキーと値のペアを反復処理できます。

# キーの反復処理
for key in person:
    print(key)

# 値の反復処理
for value in person.values():
    print(value)

# キーと値のペアの反復処理
for key, value in person.items():
    print(f"{key}: {value}")

キー(鍵)の特性

  1. 唯一性:
    • 各キーはユニークでなければなりません。同じ辞書内で重複したキーを持つことはできません。もし辞書に重複したキーを追加しようとすると、最後に追加したキーが優先され、以前の値は上書きされます。
d = {"a": 1, "b": 2, "a": 3}
print(d)  # {'a': 3, 'b': 2}
  1. 変更不可(ハッシュ可能):
    • キーは変更不可(イミュータブル)でなければなりません。一般的に、文字列、数値、タプルなどのイミュータブルなデータ型がキーとして使用されます。リストや辞書などのミュータブルなデータ型はキーとして使用できません。
d = {1: "one", (2, 3): "tuple", "key": "value"}
# 有効なキー:整数、タプル、文字列
print(d)  # {1: 'one', (2, 3): 'tuple', 'key': 'value'}

# 無効なキー(リスト)はTypeErrorを引き起こす
# d = {[1, 2]: "list"}  # TypeError: unhashable type: 'list'
  1. キーの比較:
    • キーは比較可能である必要があります。Pythonはキーの比較を使用して辞書内の値を検索します。キーとして使用するデータ型は、比較が定義されている必要があります。
  2. データ型の混在:
    • 辞書のキーには異なるデータ型を混在させることができます。例えば、同じ辞書内で整数、文字列、タプルをキーとして使用することができます。
d = {1: "one", "two": 2, (3, 4): "tuple"}
print(d)  # {1: 'one', 'two': 2, (3, 4): 'tuple'}

辞書型に関する関数

関数/メソッド 説明
dict() 新しい辞書を作成します。
len(dict) 辞書の要素数を返します。
dict[key] 指定されたキーに対応する値を返します。
dict[key] = value 指定されたキーに値を設定します。既存のキーの場合、その値を更新します。
del dict[key] 指定されたキーと対応する値を辞書から削除します。
key in dict キーが辞書に含まれているかを確認します。
dict.keys() 辞書の全てのキーを返します。
dict.values() 辞書の全ての値を返します。
dict.items() 辞書の全てのキーと値のペアを返します。
dict.clear() 辞書の全ての要素を削除します。
dict.copy() 辞書の浅いコピーを返します。
dict.get(key[, default]) 指定されたキーに対応する値を返します。キーが存在しない場合はデフォルト値を返します。
dict.pop(key[, default]) 指定されたキーに対応する値を返し、そのキーと値を辞書から削除します。
dict.popitem() 辞書からランダムにキーと値のペアを削除し、そのペアを返します。
dict.setdefault(key[, default]) 指定されたキーに対応する値を返します。キーが存在しない場合、キーにデフォルト値を設定します。
dict.update([other]) 他の辞書やキーと値のペアから辞書を更新します。
dict.fromkeys(seq[, value]) 指定されたキーのシーケンスから新しい辞書を作成し、全てのキーにデフォルト値を設定します。

Discussion