『Python数値計算ノート』ではアフィリエイトプログラムを利用して商品を紹介しています。

辞書(ディクショナリ)

辞書の構造と基本操作

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'}

コメント

  1. HNaito より:

    下記は誤植と思われますので、ご確認ください。
     
    「dict.get( )」で、第 2 引数で指定した値を表示します。→ 第 2 引数で指定した値を返します。

    • あとりえこばと より:

      今日はたくさんの記事に目を通してくださって、ありがとうございます。m(_ _)m
      訂正しておきました。