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

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

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

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

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

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

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

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

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

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

 dict[キー]

のように記述します。

# 元素記号のディクショナリ
elements1 = {"H":"水素", "He":"ヘリウム", "Li":"リチウム"}

# Li をキーにして要素を取り出します
x = elements1["Li"]
print(x)
リチウム

 

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

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

# 元素記号のディクショナリ
elements2 = {"Be":"ベリリウム", "B":"ホウ素", "C":"炭素"}

# ディクショナリの確認
print(elements2)
{'Be': 'ベリリウム', 'B': 'ホウ素', 'C': '炭素'}

 

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

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

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

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

# 元素記号のディクショナリ
elements3 = {"N":"窒素", "O":"酸素", "F":"フッ素"}

# 新しい要素を追加
elements3["Ne"] = "ネオン"

print(elements3)
{'N': '窒素', 'O': '酸素', 'F': 'フッ素', 'Ne': 'ネオン'}

 

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

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

 del dict[キー]

という形式で書きます。

# 元素記号のディクショナリ
elements4 = {"Na":"ナトリウム", "Mg":"マグネシウム", "Al":"アルミニウム"}

# マグネシウムを削除
del elements4["Mg"]

print(elements4)
{'Na': 'ナトリウム', 'Al': 'アルミニウム'}

 

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

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

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

のように書きます。

# 元素記号のディクショナリ
elements5 = {"Si":"ケイ素", "P":"リン", "S":"硫黄"}

# 要素の置換
elements5["Si"] = "シリコン"

print(elements5)
{'Si': 'シリコン', 'P': 'リン', 'S': '硫黄'}

 

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

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

 キー in dict

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

 キー not in dict
# 元素記号のディクショナリ
elements5 = {"Si":"ケイ素", "P":"リン", "S":"硫黄"}

# リンがディクショナリに含まれていることを確認します
x = "P" in elements5
print(x)
True
# 元素記号のディクショナリ
elements5 = {"Si":"ケイ素", "P":"リン", "S":"硫黄"}

# リンがディクショナリに含まれていないかどうかを確認します
x = "P" not in elements5
print(x)
False

 

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

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

 dict.clear()

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

# 元素記号のディクショナリ
elements6 ={"Cl":"塩素", "Ar":"アルゴン", "K":"カリウム"}

# 要素をすべて削除します
elements6.clear()

print(elements6)
{}

 

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

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

 pop()メソッドは指定したキーに対応する要素を削除して、その値を返します。第 1 引数で指定したキーがディクショナリに含まれていない場合、第 2 引数で指定したオブジェクトを返します。第 2 引数は省略可能です。

# 元素記号のディクショナリ
elements7 ={"Ca":"カルシウム", "Sc":"スカンジウム", "Ti":"チタン"}

# スカンジウムを削除します
x = elements7.pop("Sc")
print(x)
スカンジウム
# 元素記号のディクショナリ
elements7 ={"Ca":"カルシウム", "Sc":"スカンジウム", "Ti":"チタン"}

# 指定したオブジェクトを返します
x = elements7.pop("X", "そんな元素はありません")
print(x)
'そんな元素はありません'

 

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

 dict.keys()

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

# 元素記号のディクショナリ
elements8 = {"V":"バナジウム", "Cr":"クロム", "Mn":"マンガン"}

# ディクショナリに含まれるキーの一覧を表示
print(elements8.keys())
dict_keys(['V', 'Cr', 'Mn'])

 

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

 dict.values()

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

# 元素記号のディクショナリ
elements8 = {"V":"バナジウム", "Cr":"クロム", "Mn":"マンガン"}

# ディクショナリに含まれる値の一覧を表示します
print(elements8.values())
dict_values(['バナジウム', 'クロム', 'マンガン'])

 

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

 dict.get (キー [, 値])

 get()メソッドは第 1 引数で指定したキーに割り当てられた値を取り出します。キーが存在しなかった場合に、第 2 引数で指定した値を表示します。

# 元素記号のディクショナリ
elements8 = {"V":"バナジウム", "Cr":"クロム", "Mn":"マンガン"}

# キーで指定した値を取り出します
x = elements8.get("V")
print(x)
'バナジウム'
# 元素記号のディクショナリ
elements8 = {"V":"バナジウム", "Cr":"クロム", "Mn":"マンガン"}

# キーで指定した値を取り出します
x = elements8.get("X", "存在しません")
print(x)
'存在しません'

 

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

 dict.setdefault (キー [, 値])

 setdefault()メソッドは第 1 引数で指定したキーに割り当てられた値を取り出します。キーが存在しなかった場合に、第 2 引数で指定した値を新たに挿入します。結果的にディクショナリは改変されてしまうので、使い方には注意が必要です。

# 元素記号のディクショナリ
elements9 = {"Fe":"鉄", "Co":"コバルト", "Ni":"ニッケル"}

# キーで指定した値を取り出します
x = elements9.setdefault("Co")
print(x)
'コバルト'
# 元素記号のディクショナリ
elements9 = {"Fe":"鉄", "Co":"コバルト", "Ni":"ニッケル"}

# キーで指定した値がない場合は新たな要素が挿入されます
elements9.setdefault("Cu", "銅")

print(elements9)
{'Fe': '鉄', 'Co': 'コバルト', 'Ni': 'ニッケル', 'Cu': '銅'}

 

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

 dict.items()

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

# 元素記号のディクショナリ
elements10 = {"Zn":"亜鉛", "Ga":"ガリウム", "Ge":"ゲルマニウム"}

# キーと値をすべて取得します
print(elements10.items())
dict_items([('Zn', '亜鉛'), ('Ga', 'ガリウム'), ('Ge', 'ゲルマニウム')])

 

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

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

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

# 元素記号のディクショナリ
elements11 = {"As":"ヒ素", "Se":"セレン", "Br":"臭素"}

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

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