辞書の構造と基本操作
Python の辞書型オブジェクト(ディクショナリ) はキー(key)と値(value)を一組にして複数の要素を一括管理するためのデータ型です。リスト の各要素がインデックス(見出し番号)が自動的に割り当てられるのに対して、ディクショナリでは各要素に対する見出し(キー)を自分で決めることができます。ディクショナリを定義するときは
{キー1 : 値1, キー2 : 値2, ...}
のように記述します。ディクショナリの値にはどのような型のデータを入れても構いませんが、キーにリストのような、mutable(変更可能)なオブジェクトを指定することはできません。何かの拍子で見出しが変わってしまうと、辞書として機能しなくなってしまうからです。
最初に辞書の基本操作を確認しておきましょう。
辞書から要素を抽出
ディクショナリからキーを指定して要素を取り出すときは
dict[キー]
のように記述します。
# PYTHON_DICTIONARY # In[1] # 辞書型オブジェクトを定義 my_dic = {"Japanese":"日本語", "French":"フランス語", "Spanish":"スペイン語"} print(my_dic["French"]) # フランス語
存在しないキーを指定すると KeyError が発生します。
# In[2] print(my_dic["English"]) '''KeyError Traceback (most recent call last)in 1 # DICTIONARY_01-2 2 ----> 3 print(my_dic["English"]) KeyError: 'English''''
辞書のデータを取得する
定義したディクショナリ名を記述すると、そのデータがすべて列挙されます。
# In[3] # 英和辞書 my_dic = {"cat":"猫", "dog":"犬", "bird":"鳥"} print(my_dic) # {'cat': '猫', 'dog': '犬', 'bird': '鳥'}
辞書に新しい要素を追加
ディクショナリに新しい要素を追加する場合は
dict[追加するキー] = 追加する要素
という形式で記述します。
# In[4] # 英和辞書 my_dic = {"car":"車", "train":"列車", "airplane":"飛行機"} # 辞書に新しい要素を追加 my_dic["bicycle"] = "自転車" print(my_dic) # {'car': '車', 'train': '列車', 'airplane': '飛行機', 'bicycle': '自転車'}
辞書から要素を削除
ディクショナリの要素を削除するときは del 文を使って
del dict[キー]
という形式で書きます。
# In[5] # 英和辞書 my_dic = {"apple":"りんご", "banana":"バナナ", "strawberry":"イチゴ"} # キーを指定して要素を削除 del my_dic["strawberry"] print(my_dic) # {'apple': 'りんご', 'banana': 'バナナ'}
辞書の要素を置換
あるキー(見出し)に対応する要素を置き換えるときは
dict[既存のキー] = 新しい要素
のように書きます。
# In[6] # 英和辞書 my_dic = {"cucumber":"きゅうり", "tomato":"トマト", "pumpkin":"カボチャ"} # "pumpkin"に対応する値を上書きする my_dic["pumpkin"] = "南瓜" print(my_dic) # {'cucumber': 'きゅうり', 'tomato': 'トマト', 'pumpkin': '南瓜'}
辞書に特定のキーが含まれているかどうかを確認
in 演算子を使うとディクショナリに指定したキーが含まれているかどうかを知ることができます。
キー in dict
戻り値は真偽値です。すなわち、指定したキーがディクショナリに存在している場合は True を、存在しない場合は False を返します。逆に not in 演算子は指定したキーが含まれていない場合に True を、含まれている場合に False を返してきます。
# In[7] # 英和辞書 my_dic = {"cookie":"クッキー", "candy":"飴玉", "chocolate":"チョコレート"} # In[8] val = "candy" in my_dic print(val) # True # In[9] val = "cake" in my_dic print(val) # False # In[10] val = "cookie" not in my_dic print(val) # False
辞書のメソッド一覧
辞書型に備わる主なメソッドを紹介します。
dict.clear():ディクショナリの要素をすべて削除
dict.clear() はディクショナリの要素をすべて削除します。
# PYTHON_DICTIONARY_CLEAR # In[1] # 和英辞書 my_dic = {"市役所":"city hall", "消防署":"fire department", "警察署":"police station"} # 辞書の内容を全消去 my_dic.clear() print(my_dic) # {}
dict.pop():キーに対応する要素を削除
dict.pop(キー[, オブジェクト]) は指定したキーに対応する要素を削除して、その値を返します。
# PYTHON_DICTIONARY_POP # In[1] # 和英辞書 my_dic = {"エスプレッソ":"Espresso", "カプチーノ":"Cappuccino", "カフェ・マキアート":"Caffè macchiato"} # "カプチーノ"を削除 my_dic.pop("カプチーノ") # 'Cappuccino' # In[2] print(my_dic) # {'エスプレッソ': 'Espresso', 'カフェ・マキアート': 'Caffè macchiato'}
第 1 引数で指定したキーがディクショナリに含まれていない場合、第 2 引数で指定したオブジェクトを返します。第 2 引数は省略も可能です。
# In[3] # "モカ"を削除 my_dic.pop("モカ", "その見出しは存在しません") # 'その見出しは存在しません'
dict.keys():キーの一覧を取得
dict.keys() はディクショナリに使用されているキーの一覧を返します。
# PYTHON_DICTIONARY_KEYS # In[1] # 和英辞書 my_dic = {"東京":"Tokyo", "ニューヨーク":"New York", "ロンドン":"London"} # 辞書に含まれるキーの一覧 my_dic.keys() # dict_keys(['東京', 'ニューヨーク', 'ロンドン'])
dict.values():値の一覧を取得
dict.values() はディクショナリに使用されている値の一覧を返します。
# PYTHON_DICTIONARY_VALUES # In[1] # 和英辞書 my_dic = {"東京":"Tokyo", "ニューヨーク":"New York", "ロンドン":"London"} # 辞書に含まれる値の一覧 my_dic.values() # dict_values(['Tokyo', 'New York', 'London'])
dict.get():キーに割り当てられた値を取得
dict.get(キー [, 値]) は第 1 引数で指定したキーに割り当てられた値を取り出します。
# PYTHON_DICTIONARY_GET # In[1] # 和英辞書 my_dic = {"シャープペン":"mechanial pencil", "消しゴム":"eraser", "ノート":"notebook"} # "消しゴム"に対応する値を取得 my_dic.get("消しゴム") print(my_dic) # 'eraser'
キーが存在しなかった場合は第 2 引数で指定した値を返します。
# In[2] # 鉛筆に対応する値を取得 my_dic.get("鉛筆", "存在しません") # '存在しません'
dict.setdefault():キーに割り当てられた値を取得
dict.setdefault(キー [, 値]) は第 1 引数で指定したキーに割り当てられた値を取り出します。
# PYTHON_DICTIONARY_SETDEFAULT # In[1] # 和英辞書 my_dic = {"シャープペン":"mechanial pencil", "消しゴム":"eraser", "ノート":"notebook"} my_dic.setdefault("シャープペン") # 'mechanial pencil'
キーが存在しなかった場合には第 2 引数で指定した値を新たに挿入します。
結果的にディクショナリは改変されてしまうので、使い方には注意が必要です。
# In[2] # 鉛筆に対応する値を取得 my_dic.setdefault("鉛筆", "pencil") # 'pencil' # In[3] print(my_dic) # {'シャープペン': 'mechanial pencil', '消しゴム': 'eraser', 'ノート': 'notebook', '鉛筆': 'pencil'}
dict.items():キーと値を取得
dict.items() はディクショナリに登録されているキーと値をすべて取得します。
# PYTHON_DICTIONARY_ITEMS # In[1] # 和英辞書 my_dic = {"テーブル":"table", "椅子":"chair", "寝台":"bed"} # キーと値をすべて取得 my_dic.items() # dict_items([('テーブル', 'table'), ('椅子', 'chair'), ('寝台', 'bed')])
dict.update():ディクショナリをアップデート
dict.update() はディクショナリをアップデートします。引数にはディクショナリを指定します。もとのディクショナリと引数のディクショナリを比較して、キーと値が重複する要素はそのまま据え置かれます。キーが重複して値が異なる要素については新しい値に更新されます。キーと値がもとのディクショナリに含まれていない場合は、新たな要素としてディクショナリに追加されます。
# PYTHON_DICTIONARY_UPDATE # In[1] # 元素記号の辞書 elements = {"As":"ヒ素", "Se":"セレン", "Br":"臭素"} # ディクショナリをアップデートします # 重複するキーに対応する値は上書きされます elements.update({"As":"Arsenic", "Se":"Selenium", "Br":"Bromine", "Kr":"Krypton"}) # 新しいディクショナリを表示します print(elements) # {'As': 'Arsenic', 'Se': 'Selenium', 'Br': 'Bromine', 'Kr': 'Krypton'}
コメント
下記は誤植と思われますので、ご確認ください。
「dict.get( )」で、第 2 引数で指定した値を表示します。→ 第 2 引数で指定した値を返します。
今日はたくさんの記事に目を通してくださって、ありがとうございます。m(_ _)m
訂正しておきました。