ディクショナリ (dict 型オブジェクト)

ディクショナリ (dict 型オブジェクト)

ディクショナリ(辞書型オブジェクト)

 ディクショナリ (辞書型オブジェクト) は キー (key) と値 (value) を一組にして複数の要素を一括管理するためのデータ型です。リスト の各要素がインデックス(見出し番号)が自動的に割り当てられるのに対して、ディクショナリでは各要素に対する見出し(キー)を自分で決めることができます。ディクショナリを定義するときは

 {キー1 : 値1, キー2 : 値2, ...}

のように記述します。ディクショナリの値にはどのような型のデータを入れても構いませんが、キーにリストのような、mutable(変更可能)なオブジェクトを指定することはできません。何かの拍子で見出しが変わってしまうと、辞書として機能しなくなってしまうからです。
 

ディクショナリ(辞書)の基本操作

 以下のサンプルコードでは、元素記号をキー、元素名を値とするディクショナリを定義して基本操作を確認します。 

ディクショナリから要素を抽出

 ディクショナリからキーを指定して要素を取り出すときは

 dict[キー]

のように記述します。

# DICTONARY_01-1

# 英和辞書
my_dic = {"Japanese":"日本語", "French":"フランス語", "Spanish":"スペイン語"}

# "French"に対応する要素を取り出す
print(my_dic["French"])
フランス語

 存在しないキーを指定すると KeyError が発生します。

# DICTONARY_01-2

# "English"に対応する要素を取り出す
print(my_dic["English"])
KeyError                                  Traceback (most recent call last)
 in 
      1 # DICTONARY_01-2
      2 
----> 3 print(my_dic["English"])

KeyError: 'English'

 

ディクショナリのデータを確認

 定義したディクショナリ名を記述すると、そのデータがすべて列挙されます。

# DICTONARY_02

# 英和辞書
my_dic = {"cat":"猫", "dog":"犬", "bird":"鳥"}

print(my_dic)
{'cat': '猫', 'dog': '犬', 'bird': '鳥'}

 

ディクショナリに新しい要素を追加

 ディクショナリに新しい要素を追加する場合は

 dict[追加するキー] = 追加する要素

という形式で記述します。

# DICTONARY_03

# 英和辞書
my_dic = {"car":"車", "train":"列車", "airplane":"飛行機"}

# 辞書に新しい要素を追加
my_dic["bicycle"] = "自転車"

print(my_dic)
{'car': '車', 'train': '列車', 'airplane': '飛行機', 'bicycle': '自転車'}

 

ディクショナリの要素を削除

 ディクショナリの要素を削除するときは del 文を使って

 del dict[キー]

という形式で書きます。

# DICTONARY_04

# 英和辞書
my_dic = {"apple":"りんご", "banana":"バナナ", "strawberry":"イチゴ"}

# キーを指定して要素を削除
del my_dic["strawberry"]

print(my_dic)
{'apple': 'りんご', 'banana': 'バナナ'}

 

ディクショナリの要素を置換

 あるキー(見出し)に対応する要素を置き換えるときは

 dict[既存のキー] = 新しい要素

のように書きます。

# DICTONARY_05

# 英和辞書
my_dic = {"cucumber":"きゅうり", "tomato":"トマト", "pumpkin":"カボチャ"}

# "pumpkin"に対応する値を上書きする
my_dic["pumpkin"] = "南瓜"

print(my_dic)
{'cucumber': 'きゅうり', 'tomato': 'トマト', 'pumpkin': '南瓜'}

 

キーが含まれているかどうかを確認

 in 演算子を使うとディクショナリに指定したキーが含まれているかどうかを知ることができます。

 キー in dict

 戻り値は真偽値です。すなわち、指定したキーがディクショナリに存在している場合は True を、存在しない場合は False を返します。逆に not in 演算子は指定したキーが含まれていない場合に True を、含まれている場合に False を返してきます。

 キー not in dict
# DICTONARY_06

# 英和辞書
my_dic = {"cookie":"クッキー", "candy":"飴玉", "chocolate":"チョコレート"}

x = "candy" in my_dic
y = "cake" in my_dic
z = "cookie" not in my_dic

print("candyは辞書に含まれる? {}".format(x))
print("cakeは辞書に含まれる? {}".format(y))
print("cookieは辞書に含まれない? {}".format(z))
candyは辞書に含まれる? True
cakeは辞書に含まれる? False
cookieは辞書に含まれない? False

 

ビジネスPython超入門

新品価格
¥2,592から
(2019/8/21 23:35時点)

ディクショナリのメソッド一覧

dict.clear() ディクショナリの要素をすべて削除

 dict.clear()

 clear()メソッドはディクショナリの要素をすべて削除します。

# DICTONARY_07

# 和英辞書
my_dic = {"市役所":"city hall",
          "消防署":"fire department",
          "警察署":"police station"}

# 辞書の内容を全消去
my_dic.clear()

print(my_dic)
{}

 

dict.pop() キーに対応する要素を削除

 dict.pop(キー[, オブジェクト])

 pop()メソッドは指定したキーに対応する要素を削除して、その値を返します。

# DICTONARY_08-1

# 和英辞書
my_dic = {"エスプレッソ":"Espresso",
          "カプチーノ":"Cappuccino",
          "カフェ・マキアート":"Caffè macchiato"}

# "カプチーノ"を削除
x = my_dic.pop("カプチーノ")

print(x)
print(my_dic)
Cappuccino
{'エスプレッソ': 'Espresso', 'カフェ・マキアート': 'Caffè macchiato'}

 第 1 引数で指定したキーがディクショナリに含まれていない場合、第 2 引数で指定したオブジェクトを返します。第 2 引数は省略も可能です。

# DICTONARY_08-2

# "モカ"を削除
y = my_dic.pop("モカ", "その見出しは存在しません")

print(y)
その見出しは存在しません

 

dict.keys() キーの一覧を取得

 dict.keys()

 keys()メソッドはディクショナリに使用されているキーの一覧を返します。

# DICTONARY_09

# 和英辞書
my_dic = {"東京":"Tokyo", "ニューヨーク":"New York", "ロンドン":"London"}

# 辞書に含まれるキーの一覧
x = my_dic.keys()

print(x)
dict_keys(['東京', 'ニューヨーク', 'ロンドン'])

 

dict.values() 値の一覧を取得

 dict.values()

 values()メソッドはディクショナリに使用されている値の一覧を返します。

# DICTONARY_10

# 和英辞書
my_dic = {"東京":"Tokyo", "ニューヨーク":"New York", "ロンドン":"London"}

# 辞書に含まれる値の一覧
x = my_dic.values()

print(x)
dict_values(['Tokyo', 'New York', 'London'])

 

dict.get() キーに割り当てられた値を取得

 dict.get (キー [, 値])

 get()メソッドは第 1 引数で指定したキーに割り当てられた値を取り出します。

# DICTONARY_11-1

# 和英辞書
my_dic = {"シャープペン":"mechanial pencil",
          "消しゴム":"eraser",
          "ノート":"notebook"}

# "消しゴム"に対応する値を取得
x = my_dic.get("消しゴム", "存在しません")

print(x)
eraser

 キーが存在しなかった場合は第 2 引数で指定した値を表示します。

# DICTONARY_11-2

# 鉛筆に対応する値を取得
y = my_dic.get("鉛筆", "存在しません")

print(y)
存在しません

 

dict.setdefault() キーに割り当てられた値を取得

 dict.setdefault (キー [, 値])

 setdefault()メソッドは第 1 引数で指定したキーに割り当てられた値を取り出します。

# DICTONARY_12-1

# 和英辞書
my_dic = {"シャープペン":"mechanial pencil",
          "消しゴム":"eraser",
          "ノート":"notebook"}

# "消しゴム"に対応する値を取得
x = my_dic.setdefault("シャープペン", "存在しません")

print(x)
mechanial pencil

 キーが存在しなかった場合には第 2 引数で指定した値を新たに挿入します。
 結果的にディクショナリは改変されてしまうので、使い方には注意が必要です。

# DICTONARY_12-2

# 鉛筆に対応する値を取得
y = my_dic.setdefault("鉛筆", "pencil")

print(y)
print(my_dic)
pencil
{'シャープペン': 'mechanial pencil', '消しゴム': 'eraser', 'ノート': 'notebook', '鉛筆': 'pencil'}

 

dict.items() キーと値を取得

 dict.items()

 items()メソッドはディクショナリに登録されているキーと値をすべて取得します。

# DICTONARY_13

# 和英辞書
my_dic = {"テーブル":"table", "椅子":"chair", "寝台":"bed"}

# キーと値をすべて取得
x = my_dic.items()

print(x)
dict_items([('テーブル', 'table'), ('椅子', 'chair'), ('寝台', 'bed')])

 

dict.update() ディクショナリをアップデート

 dict.update(ディクショナリ)

 dict.update()メソッドはディクショナリをアップデートします。引数にはディクショナリを指定します。もとのディクショナリと引数のディクショナリを比較して、キーと値が重複する要素はそのまま据え置かれます。キーが重複して値が異なる要素については新しい値に更新されます。キーと値がもとのディクショナリに含まれていない場合は、新たな要素としてディクショナリに追加されます。

# DICTONARY_14

# 元素記号の辞書
elements = {"As":"ヒ素", "Se":"セレン", "Br":"臭素"}

# ディクショナリをアップデートします
# 重複するキーに対応する値は上書きされます
elements.update({"As":"Arsenic", "Se":"Selenium", "Br":"Bromine", "Kr":"Krypton"})

# 新しいディクショナリを表示します
print(elements)
{'As': 'Arsenic', 'Se': 'Selenium', 'Br': 'Bromine', 'Kr': 'Krypton'}