辞書(ディクショナリ)

当サイトではアフィリエイトプログラムを利用して商品を紹介しています。

辞書の構造と基本操作

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
      訂正しておきました。

  2. あとりえこばと より:

    【AIがPythonのディクショナリについて対話形式で解説します】
     
    A: ねえ、Pythonのディクショナリって知ってる?
     
    B: ああ、ディクショナリって、キーと値のペアを使ってデータを格納するためのデータ構造だよね。
     
    A: そうそう、その通り!ディクショナリは、他の言語では連想配列やハッシュマップとも呼ばれるよ。キーと値の関連付けができるから、データの取得が高速で効率的なんだ。

    B: キーと値って、どういう関係なの?
     
    A: キーは一意の識別子で、そのキーに対応する値を格納するんだ。例えば、社員の名前をキーにして、それぞれの名前に対応する電話番号を値として格納できるんだよ。

    B: なるほど、だからキーを指定すると、それに対応する値を取得できるんだね。
     
    A: その通り!ディクショナリの値は可変で、さまざまなデータ型を格納できるんだ。文字列、数値、リスト、さらには他のディクショナリまで、様々なデータを格納できるんだよ。

    B: なるほど、便利そうだね。ディクショナリの使い方はどうやって覚えればいい?
     
    A: Pythonでは、中括弧 {} を使ってディクショナリを作成できるんだ。例えば、employee = {“John”: 123456, “Alice”: 987654} のようにキーと値のペアを指定して作成できるよ。

    B: わかった!それからディクショナリの要素にアクセスする方法はあるの?
     
    A: そうだね、ディクショナリの要素にアクセスするには、キーを使ってアクセスするんだ。例えば、employee[“John”] のようにキーを指定すると、それに対応する値が返ってくるよ。

    B: 分かった!ディクショナリはキーと値のペアを使ってデータを効率的に格納できるんだね。使ってみようと思うよ!
     
    A: いいね!ディクショナリを使うことで、データの管理や検索が簡単になるよ。上手に活用してみてね!