辞書とは
辞書(dictionary)は、キー(key) と値(value) のペアを格納するデータ構造です。波括弧 {} で作ります。
python
# 辞書の作成person = { "name": "太郎", "age": 25, "city": "東京"}# 値へのアクセスperson["name"] # "太郎"person["age"] # 25辞書の基本操作
python
person = {"name": "太郎", "age": 25}# 値の追加・更新person["email"] = "taro@example.com" # 新しいキーを追加person["age"] = 26 # 既存のキーを更新# 値の削除del person["email"]# キーの存在確認"name" in person # True"email" in person # False# 辞書の長さlen(person) # 2注意: 存在しないキーにアクセスすると
KeyErrorが発生します。
python
person["phone"] # KeyError: 'phone'# 安全なアクセスには get() を使うperson.get("phone") # None(エラーにならない)person.get("phone", "N/A") # "N/A"(デフォルト値を指定)辞書のメソッド
keys(), values(), items()
python
person = {"name": "太郎", "age": 25, "city": "東京"}person.keys() # dict_keys(["name", "age", "city"])person.values() # dict_values(["太郎", 25, "東京"])person.items() # dict_items([("name", "太郎"), ("age", 25), ...])辞書のループ
python
person = {"name": "太郎", "age": 25}# キーのループfor key in person: print(key) # name, age# キーと値のループfor key, value in person.items(): print(f"{key}: {value}")# name: 太郎# age: 25その他のメソッド
python
d = {"a": 1, "b": 2}# コピーd2 = d.copy()# 別の辞書をマージd.update({"c": 3, "b": 20}) # d = {"a": 1, "b": 20, "c": 3}# ポップ(取り出して削除)d.pop("a") # 1("a"の値を返して削除)d.pop("z", 0) # 0(キーがない場合はデフォルト値)# 全削除d.clear()辞書とリスト
辞書とリストは組み合わせて使うことが多いです。
リストの辞書(データベース的な使い方)
python
students = [ {"name": "田中", "score": 85, "grade": "B"}, {"name": "鈴木", "score": 92, "grade": "A"}, {"name": "佐藤", "score": 78, "grade": "C"},]# 特定の学生の点数を取得for student in students: print(f"{student['name']}: {student['score']}点")辞書でのカウント
python
words = ["apple", "banana", "apple", "cherry", "banana", "apple"]count = {}for word in words: if word in count: count[word] += 1 else: count[word] = 1count # {"apple": 3, "banana": 2, "cherry": 1}get() を使った簡潔なカウント
python
words = ["apple", "banana", "apple", "cherry", "banana", "apple"]count = {}for word in words: count[word] = count.get(word, 0) + 1count # {"apple": 3, "banana": 2, "cherry": 1}練習: 文字の頻度集計
文字列を受け取り、各文字の出現回数を辞書で返す関数 char_count(s) を定義してください。
練習: 辞書の反転
辞書のキーと値を入れ替えた新しい辞書を返す関数 invert_dict(d) を定義してください。