Pythonの辞書型(dict型)とは、キー(key)と値(value)をペアにしてデータを格納するデータ型のこと。この特性を活用することで様々なデータの検索や操作が容易になります。
# あるクラスの生徒とその身長(cm)を管理する辞書 student_heights = { 'Taro': 168, 'Hanako': 156, 'Yosuke': 174, 'Yuko': 162 }
参考 Pythonの特徴
辞書型の概念や基本的な使い方、その他高度な使用法については、初めてPythonを学ぶ人には難しく感じるかもしれません。
この記事ではPython初心者向けに辞書型(dictionary/dict型)の基本を1からわかりやすく解説します。読者の方々が辞書型を効果的に使えるようになるためのガイドをご提供します。
Pythonエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。
Python:辞書型(dict型)とは?
辞書型とは、Pythonで提供されるデータ構造の1つで、それぞれの要素がキーと値のペアとして格納される形式のデータ構造です。
具体的な例を見てみましょう。
# あるクラスの生徒とその身長(cm)を管理する辞書 student_heights = { 'Taro': 168, 'Hanako': 156, 'Yosuke': 174, 'Yuko': 162 }
辞書型は「キー(key)」と「値(value)」のペアでデータを管理します。
上記のコードでは、student_heights
という名前の辞書を定義しています。キーと値のペアは、コロン(:
)を使用して区切られ、それぞれのペアはカンマ(,
)で区切られます。全体は波括弧({}
)で囲みます。
キーは生徒の名前('Taro'
、'Hanako'
、'Yosuke'
、'Yuko'
)で、値はそれぞれの生徒の身長です。
辞書のキーとしては、変更不可能(immutable)な型が利用できます。→言い換えると、数値、文字列、タプルなどがキーとして使えます。
ただし、リストや他の辞書などはキーとして使えません。なぜなら、リストや辞書は変更可能(mutable)で、その中身が変わる可能性があるからです。辞書はキーを使って値を検索するため、キーが変わってしまうとその後の処理で問題が起きてしまう可能性があるからです。
値については、どんな型でも構いません。文字列、数値、リスト、タプル、さらには他の辞書まで、あらゆる型のデータを値として持つことができます。
Python:辞書型へのアクセス
辞書から値を取得する最も一般的な方法は、キーを使って直接アクセスする方法です。以下に例を示します。
student_heights = { 'Taro': 168, 'Hanako': 156, 'Yosuke': 174, 'Yuko': 162 } print(student_heights['Taro']) # これは168を出力します
参考 print関数の使い方
この例では、'Taro'
というキーを指定して、そのキーに対応する値(Taroの身長)を取得しています。同様に、他の生徒の身長もキーを使って取得することができます。
しかし、存在しないキーを指定して値を取得しようとすると、KeyError
が発生します。
例えば、student_heights['Ken']
とすると、「KeyError: 'Ken'」というエラーメッセージが表示されます。これは'Ken'というキーが辞書に存在しないためです。
student_heights = { 'Taro': 168, 'Hanako': 156, 'Yosuke': 174, 'Yuko': 162 } print(student_heights['ken']) # KeyError: 'ken'
このようなKeyError
を避けるためには、辞書のget
メソッドを使う方法があります。get
メソッドを使うと、指定したキーが辞書に存在しない場合にもエラーを回避することができます。その代わりに、デフォルトの値(指定しない場合はNone
)が返されます。
student_heights = { 'Taro': 168, 'Hanako': 156, 'Yosuke': 174, 'Yuko': 162 } print(student_heights.get('Ken')) # これはNoneを出力します
また、get
メソッドではデフォルトの値を自由に指定することもできます。
student_heights = { 'Taro': 168, 'Hanako': 156, 'Yosuke': 174, 'Yuko': 162 } print(student_heights.get('Ken', 0)) # これは0を出力します
この例では、デフォルト値である0が出力されます。
辞書型のメソッドについてはページ後半で再度詳しく解説いたします。
Python:辞書型の操作(追加・変更・削除)
ここからはPythonの辞書型における追加・変更・削除の操作について、サンプルコードとともに詳しく解説します。
Pythonの辞書型:値の追加と更新
Pythonの辞書型に新たにキーと値を追加するには新しいキーに対して値を割り当てます。また、既存のキーに対して新たな値を割り当てることで、そのキーの値を更新することもできます。
student_heights = {'Taro': 168, 'Hanako': 156} # 新しいキーと値を追加 student_heights['Yosuke'] = 174 print(student_heights) # {'Taro': 168, 'Hanako': 156, 'Yosuke': 174} # 既存のキーの値を更新 student_heights['Taro'] = 170 print(student_heights) # {'Taro': 170, 'Hanako': 156, 'Yosuke': 174}
上記の例では、最初に辞書student_heights
に'Yosuke'
という新しいキーと174
という新しい値を追加。そして、続けて既存のキー'Taro'
の値を170
に更新しています。
Pythonの辞書型:値の削除
Pythonの辞書型から特定のキーとその値を削除するにはdel
ステートメントを使います。
また、pop
メソッドを使うと、キーとその値を辞書から削除するとともに、削除した値を取得することができます。
student_heights = {'Taro': 170, 'Hanako': 156, 'Yosuke': 174} # キーと値を削除 del student_heights['Taro'] print(student_heights) # {'Hanako': 156, 'Yosuke': 174} # キーと値を削除し、値を取得 removed_height = student_heights.pop('Hanako') print(removed_height) # 156 print(student_heights) # {'Yosuke': 174}
上記の例では、最初に'Taro'
というキーとその値を辞書から削除。次に、pop
メソッドを使用して'Hanako'
というキーとその値を削除し、削除した値をremoved_height
に格納しています。
以上がPythonの辞書型の基本的な操作になります。これらの操作を理解し、使いこなすことで、辞書型のデータを効率的に扱うことができるようになるでしょう。
Python:辞書(dict型)のメソッド
本文前半で解説した通り、辞書型には便利なメソッドが存在しています。この章では辞書型のメソッドについて詳しく解説します。
dict:getメソッド
get
メソッドは、指定したキーに対応する値を辞書から取得します。基本的な使い方は以下の通り。
value = dictionary.get(key)
ここで、dictionary
は対象の辞書、key
は取得したい値に対応するキーです。value
は取得した値になります。
重要な点として、get
メソッドはキーが辞書に存在しない場合でもエラーを発生させません。代わりにNone
を返します。この特性は、辞書から値を安全に取得するために非常に便利です。
また、get
メソッドには2つ目の引数を指定することもできます。この2つ目の引数は、キーが辞書に存在しない場合に返すデフォルト値です。
value = dictionary.get(key, default)
getメソッドのサンプルコードはこちら。
student_heights = {'Taro': 170, 'Hanako': 156} # 'Taro'の身長を取得 taro_height = student_heights.get('Taro') print(taro_height) # 170 # 'Yosuke'の身長を取得(存在しないため、Noneが返る) yosuke_height = student_heights.get('Yosuke') print(yosuke_height) # None # 'Yosuke'の身長を取得(存在しないため、デフォルト値の0が返る) yosuke_height = student_heights.get('Yosuke', 0) print(yosuke_height) # 0
dict:keysメソッド
keys
メソッドは、辞書に含まれる全てのキーを返すメソッドです。このメソッドを使うと、辞書内のすべてのキーを一覧できます。
keys = dictionary.keys()
ここで、dictionary
は対象の辞書で、keys
は取得したキーのリストになります。
実際に、以下のようなサンプルコードで動作を確認してみます。
student_heights = {'Taro': 170, 'Hanako': 156, 'Yosuke': 174} # 辞書の全てのキーを取得 keys = student_heights.keys() print(keys) # dict_keys(['Taro', 'Hanako', 'Yosuke'])
上記のコードでは、keys
メソッドを使用してstudent_heights
辞書内のすべてのキーを取得し、それを表示しています。
keys
メソッドが返すオブジェクトは、リストと似た振る舞いをしますが、正確には"ビュー(view)"と呼ばれる特別なオブジェクトです。これは辞書のキーに対する動的なビューで、辞書が変更されたときにその変更を反映します。
dict:valuesメソッド
values
メソッドは、辞書に含まれる全ての値を返すメソッドです。このメソッドを使うと、辞書内のすべての値を一覧できます。
values = dictionary.values()
dictionary
は対象の辞書で、values
は取得した値のリストになります。
以下のようなサンプルコードで具体的な動作を確認してみます。
student_heights = {'Taro': 170, 'Hanako': 156, 'Yosuke': 174} # 辞書の全ての値を取得 values = student_heights.values() print(values) # dict_values([170, 156, 174])
上記のコードでは、values
メソッドを使用してstudent_heights
辞書内のすべての値を取得し、それを表示しています。
values
メソッドが返すオブジェクトは、keysメソッドと同様、正確には"ビュー(view)"と呼ばれる特別なオブジェクトです。
dict:itemsメソッド
items
メソッドは、辞書に含まれる全てのキーと値のペアを返すメソッド。このメソッドを使うと、辞書内のすべてのキーと値のペアを一覧で確認することができます。
items = dictionary.items()
dictionary
は対象の辞書で、items
は取得したキーと値のペア(アイテム)のリストになります。
以下のサンプルコードで具体的な動作を確認してみます。
student_heights = {'Taro': 170, 'Hanako': 156, 'Yosuke': 174} # 辞書の全てのアイテムを取得 items = student_heights.items() print(items) # dict_items([('Taro', 170), ('Hanako', 156), ('Yosuke', 174)])
上記のコードでは、items
メソッドを使用してstudent_heights
辞書内のすべてのアイテム(キーと値のペア)を取得し、それを表示しています。
dict:popメソッド
pop
メソッドは、辞書から指定したキーに対応するアイテム(キーと値のペア)を削除し、その値を返すメソッドです。以下は基本的な使い方は以下の通り。
value = dictionary.pop(key)
dictionary
は対象の辞書、key
は削除したいアイテムのキーです。value
は削除したアイテムの値になります。
指定したキーが辞書に存在しない場合、pop
メソッドはKeyErrorを発生させます。ただし、pop
メソッドには2つ目の引数を指定することもでき、それを指定することでエラーを回避させることも可能です。
value = dictionary.pop(key, default)
以下に具体的なサンプルコードを示します。
student_heights = {'Taro': 170, 'Hanako': 156} # 'Taro'の身長を削除し、その値を取得 taro_height = student_heights.pop('Taro') print(taro_height) # 170 print(student_heights) # {'Hanako': 156} # 'Yosuke'の身長を削除(存在しないため、デフォルト値の0を返す) yosuke_height = student_heights.pop('Yosuke', 0) print(yosuke_height) # 0
dict:clearメソッド
clear
メソッドは、辞書からすべてのアイテム(キーと値のペア)を削除するメソッドです。このメソッドを使うと、辞書の内容を全てクリアすることができます。
dictionary.clear()
以下に具体的なサンプルコードを示します。
student_heights = {'Taro': 170, 'Hanako': 156, 'Yosuke': 174} print(student_heights) # {'Taro': 170, 'Hanako': 156, 'Yosuke': 174} # 辞書の内容を全てクリア student_heights.clear() print(student_heights) # {}
上記のコードでは、まずstudent_heights
辞書の内容を表示し、次にclear
メソッドを使用して辞書の内容を全てクリアします。その結果、再度辞書の内容を表示すると空の辞書({}
)が表示されるということを示しています。
Python:辞書(dict)まとめ
始めてPythonを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。
Pythonをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?今すぐ行動したい方は以下の記事をチェック!
読者料典 Python入門:学習カリキュラム ←こちらから!