こんにちは。
Pythonのシーケンスには「文字列」「range()
」 「list()
」「tuple()
」などがありました。
このシーケンスとは似て非なるものですが、Pythonの非常に重要な機能として、セットと辞書の2つの機能があります。
セットについては以下の記事を参照してください。
【Python】セット(集合体)の使い方のまとめ【基本から応用まで】
続きを見る
今回は辞書機能について解説していきます。
pythonにおける辞書とは
リストやタプルなどのシーケンスとは異なり、pythonでは辞書に要素を追加する時には、追加するデータの要素に「キー」という名前をつける必要があります。
すなわち、「データ(値)」と「キー」とをペアにする必要があります。
辞書に収納した要素を取り出す時には、この「キー」番号で取り出す事ができます。
では、実際に以下の内容で設定しました。
tommy の個人情報
first_name
"tommy
"last_name
"obstetrician
"sex
male
address
japan
job
obgyn
この設定内容で辞書を作ってみましょう。
辞書 {}
, dict()
の作り方
辞書の使い方としては以下のものがあります。
{}
の使い方dict()
の使い方- 辞書の内包表記の仕方
dict.fromkeys()
の使い方
各々について見ていきましょう。
{}
の使い方
辞書の作り方を解説していきます。
辞書を作るには、要素とキーを、要素 : キー(値)
の様に記載します。
また、{ }
を使用しても辞書を作れます。
先程設定した個人情報の内容で辞書を作成してみます。
また、辞書を作成する際には後から追加した要素が上書きされる点が重要です。
1 2 3 4 5 6 7 | >>> tommy_info = {"first_name": "tommy", "last_name": "obstetrician", "sex": "male", "address": "japan", "job": "obgyn"} >>> print(tommy_info) {'first_name': 'tommy', 'last_name': 'obstetrician', 'sex': 'male', 'address': 'japan', 'job': 'obgyn'} >>> tommy_info = {"job": "obgyn", "job": "programmer", "sex": "male"} >>> print(tommy_info) {'job': 'programmer', 'sex': 'male'} |
また、辞書ではリストは使用できませんがタプルを使用することも出来ます。
ここでは、日ごとの気温を年月日をタプルとして収納し、:
の右側に気温を記載して辞書を作成してみます。
1 2 3 | temperature_degree = {(2019, 6, 1): 21, (2019, 6, 2): 25, (2019, 6, 5): 22, (2019, 6, 7): 18} >>> print(temperature_degree) {(2019, 6, 1): 21, (2019, 6, 2): 25, (2019, 6, 5): 22, (2019, 6, 7): 18} |
タプルに関する復習は以下の記事を参照ください。
【Python】タプルの使い方【基本から応用まで】
続きを見る
dict()
の使い方
タプルを変換して辞書を作る
タプルの様な(要素, 値
)を収納しているシーケンスでは、dict()
機能を用いて各要素をキーとして、値をデータとして辞書に変換する事ができます。
1 2 3 | >>> medical_department1 = dict([("obgyn", 2), ("urology", 6), ("radiology", 3)]) >>> print(medical_department1) {'obgyn': 2, 'urology': 6, 'radiology': 3} |
zip() を利用して辞書を作る
要素= キーから構成されるリストと、値=データから構成されるリストを zip()
の引数で指定し dict()
を使用して辞書を作成する事ができます。
1 2 3 4 5 6 | >>> md = ["obgyn", "urology", "radiology"] >>> md_num = [2, 5, 7] >>> medical_department2 = dict( zip(md, md_num)) >>> print(medical_department2) {'obgyn': 2, 'urology': 5, 'radiology': 7} |
キーを利用して辞書を作る
「 キー = 値
」を利用しても辞書を作る事が出来ます。
また、 キー = 値
をコンマ ,
で区切る事によってdict() の引数に指定する事が出来ます。
1 2 3 | >>> medical_department3 = dict(obgyn = 2, urology = 5, radiology = 7) >>> print(medical_department3) {'obgyn': 2, 'urology': 5, 'radiology': 7} |
辞書の内包表記の仕方
内包表記も使用する事が出来ます。
1 2 3 | >>> num = {i: i*3 for i in range(2, 10, 1)} >>> print(num) {2: 6, 3: 9, 4: 12, 5: 15, 6: 18, 7: 21, 8: 24, 9: 27} |
辞書の特殊な使い方【dict.fromkeys()
を使う】
異なるキーに対して、全て同じ値を初期値として設定する方法として dict.fromkeys()
があります。
実際に使用してみましょう。
1 2 3 | >>> sanpu_count = dict.fromkeys(list("sanfujinkainotechou"), 5) >>> print(sanpu_count) {'s': 5, 'a': 5, 'n': 5, 'f': 5, 'u': 5, 'j': 5, 'i': 5, 'k': 5, 'o': 5, 't': 5, 'e': 5, 'c': 5, 'h': 5} |
辞書 {}
, dict()
の使い方
辞書に要素を追加する【更新と参照もセットで公開】
辞書に要素を追加したり参照する時には 辞書名(medical_department)[キー]
と入力します。
すでに入力されているキーを再入力した際には、キーが上書きされます。
参照する場合に、格納されていないキーを参照しようとした際には KeyError
と出力されます。
ただし、参照の仕方には get()
というメソッドもあります。
get()
メソッドを使用した際に格納されていないキーを参照しようとした際には KeyError
と出力されません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | >>> medical_department = {} >>> medical_department["gynecology"] = 1 >>> medical_department["surgery"] = 2 >>> medical_department["urology"] = 3 >>> medical_department["pathology"] = 4 >>> medical_department["dermatology"] = 5 >>> print(medical_department) {'gynecology': 1, 'surgery': 2, 'urology': 3, 'pathology': 4, 'dermatology': 5} >>> medical_department["urology"] 3 >>> medical_department["obstetrics"] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'obstetrics' >>> medical_department.get("surgery") 2 >>> medical_department.get("obstetrics") >>> |
辞書の要素の削除の仕方
辞書で要素を削除する際には pop()
を使用します。
pop()
は引数にキーを使用する事で、値が戻り値として出力されます。
全ての要素を削除する際には、メソッドの clear()
を使用しまます。
1 2 3 4 5 6 7 8 9 10 11 12 13 | >> medical_department = {} >>> medical_department["gynecology"] = 1 >>> medical_department["surgery"] = 2 >>> medical_department["urology"] = 3 >>> medical_department["pathology"] = 4 >>> medical_department["dermatology"] = 5 >>> print(medical_department) {'gynecology': 1, 'surgery': 2, 'urology': 3, 'pathology': 4, 'dermatology': 5} >>> medical_department.pop("surgery") 2 >>> print(medical_department) {'gynecology': 1, 'urology': 3, 'pathology': 4, 'dermatology': 5} <span class="s1">>>> medical_department.clear()<br />>>> print(medical_department)</span> |
辞書に格納されている要素の検索方法について
格納されているキーがあるのかないのかを確認すルためには in
や not in
を使用します。
1 2 3 4 5 6 7 8 9 10 11 12 | >>> medical_department = {} >>> medical_department["gynecology"] = 1 >>> medical_department["surgery"] = 2 >>> medical_department["urology"] = 3 >>> medical_department["pathology"] = 4 >>> medical_department["dermatology"] = 5 >>> print(medical_department) {'gynecology': 1, 'surgery': 2, 'urology': 3, 'pathology': 4, 'dermatology': 5} >>> "obstetrics" in medical_department False >>> "obstetrics" not in medical_department True |
その他の辞書のメソッドについて
その他の辞書のメソッドには以下のものがあります。
辞書のメソッド
keys
辞書に格納されているキー一覧values()
辞書に格納されている値の一覧items()
辞書に格納されているキーと値のタプル形式の一覧
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | >>> medical_department = {} >>> medical_department["gynecology"] = 1 >>> medical_department["surgery"] = 2 >>> medical_department["urology"] = 3 >>> medical_department["pathology"] = 4 >>> medical_department["dermatology"] = 5 >>> print(medical_department) {'gynecology': 1, 'surgery': 2, 'urology': 3, 'pathology': 4, 'dermatology': 5} >>> medical_department.keys() dict_keys(['gynecology', 'surgery', 'urology', 'pathology', 'dermatology']) >>> medical_department.values() dict_values([1, 2, 3, 4, 5]) >>> medical_department.items() dict_items([('gynecology', 1), ('surgery', 2), ('urology', 3), ('pathology', 4), ('dermatology', 5)]) |
まとめ| 辞書機能の基本から応用まで
辞書機能の基本から応用まで解説しました。
シーケンス、セット、辞書はpythonを使用する上で非常に重要ですので、一度整理しておきましょう。
今回は以上とします。