No Result
View All Result
WebHack
  • お知らせ
  • IoT/ガジェット
  • Webサービス
  • 通信技術
  • プログラミング
  • 電気自動車
  • お知らせ
  • IoT/ガジェット
  • Webサービス
  • 通信技術
  • プログラミング
  • 電気自動車
No Result
View All Result
WebHack
No Result
View All Result
Home プログラミング

【Python初心者向け】辞書(dict)の使い方を徹底解説!

fukii by fukii
2020年3月2日
in プログラミング
0
【Python初心者向け】辞書(dict)の使い方を徹底解説!
0
SHARES
23
VIEWS

Pythonの辞書はリストのインデックス番号を「名前のあるキー」にしたバージョンです。

リストと似ていますがリストと同じかそれ以上に使うことが多いデータ型なので、一通りの使い方が頭に入っているとプログラミングが捗ります。

ここでは辞書について

  • Pythonの辞書って何?
  • Pythonの辞書の基本的な構文、初期化方法は?
  • Pythonの辞書の要素の追加・更新・削除の方法は?

といった疑問に答えつつ、辞書について解説します。

目次

  • 1 Pythonの辞書(dict)とは?
  • 2 Pythonの辞書(dict)の初期化
    • 2.1 基本的な辞書の初期化方法
    • 2.2 dict()を使った辞書の初期化
    • 2.3 dict.fromkeys()で辞書を初期化する
  • 3 Pythonの辞書(dict)の使い方
    • 3.1 要素の参照
    • 3.2 要素の追加・更新
    • 3.3 要素を削除する
    • 3.4 キーが存在するか確認する

Pythonの辞書(dict)とは?

Pythonの辞書(dict)とは?

そもそも辞書って何だろう?というところから話をしていきたいと思います。

多分辞書と聞いて真っ先に思い浮かぶのは「子供の頃学校で使った分厚い国語辞典」とかかなと思うのですが、Pythonで言うところの辞書は「キーと値が1対1で結びついたリスト」です。

キーを指定することで、対応する値を取得できるようになったのがPythonの辞書です。分厚い本の辞書の「さくいん」と似たような感じでしょうか。

辞書はリストと違い、インデックス番号ではなくキーで値を管理するので、要素の順番がないことが特徴です(といってもfor..inを使ったら左から順に取り出されはしますが)。

Pythonの辞書(dict)の初期化

Pythonの辞書(dict)の初期化

では辞書の使い方を見ていきましょう。

基本的な辞書の初期化方法

辞書の初期化は次のようにします。

書式変数 = {キー1 : 値1, キー2 : 値2, キー3 : 値3 ... キーn : 値n}

では実際に辞書を初期化してみましょう。

                            subjects = {"Japanese":68, "Math":32, "Social Studies":89, "Science":91, "English":41}print(subjects)
                          
                            {'Japanese': 68, 'Math': 32, 'Social Studies': 89, 'Science': 91, 'English': 41}
                          

とある生徒の全教科の点数を辞書にしました。

リストと違い辞書はキーを指定できるので「その値が何を示しているのか」が分かりやすくなる特徴があり、コードが長くなってきたりしたときにコード意味を追いやすくて便利です。

リストと同じように辞書も初期化時に折り返しが使えます。リストより辞書の方がキーを指定する分横に長くなりがちなので重宝します。

                            subjects = {    "Japanese":68,    "Math":32,    "Social Studies":89,    "Science":91,    "English":41}print(subjects)
                          

また、辞書はキーも値も型がミックスされていても問題ありません。

                            mixes = {10:"ten", "seven":7, "真":True, False:"偽"}print(mixes)
                          
                            {10: 'ten', 'seven': 7, '真': True, False: '偽'}
                          

さらに、キーには「タプル」を指定することができます。

タプルを辞書のキーにする方法はこちらの記事を参照してください。

※ここに「【Python初心者向け】タプル(tuple)の使い方を徹底解説!」の「辞書のキーに使える」へのリンクを挿入予定

dict()を使った辞書の初期化

次にdict()を使って辞書を初期化する方法を見ていきましょう。

まずはリストから辞書を作ってみます。リストから辞書を作るには [キー, 値] の書式のリストをdict()の引数に渡してあげます。

                            list = [    ["male_20", 172.3],    ["male_25", 170.5],    ["female_20", 159.5],    ["female_25", 155.2],]dict = dict(list)print(dict)
                          
                            {'male_20': 172.3, 'male_25': 170.5, 'female_20': 159.5, 'female_25': 155.2}
                          

気をつける点は2次元リストにすることです。1次元リストを渡すと辞書への変換エラーが発生します。

タプルでもリストと同じように辞書を作ることができます。

                            tuple = (    ("male_20", 172.3),    ("male_25", 170.5),    ("female_20", 159.5),    ("female_25", 155.2),)dict = dict(tuple)print(dict)
                          

また、dict()はzip()と組み合わせることで、キーのリストと値のリストを合わせて辞書にすることができます。

                            keys = ["apple", "orange", "grape"]values = ["りんご", "オレンジ", "ぶどう"]dict = dict(zip(keys, values))print(dict)
                          
                            {'apple': 'りんご', 'orange': 'オレンジ', 'grape': 'ぶどう'}
                            
                          

なお、キーの要素数と値の要素数が合わなくてもエラーにはなりません。「数の小さい方に合わせて辞書が初期化」されます(要素数があっていないのに気づけないとバグの温床になります、気をつけましょう)。

                            keys = ["apple", "orange", "grape"]values = ["りんご", "オレンジ"] #ぶどうが足りない!dict = dict(zip(keys, values))print(dict)
                          
                            {'apple': 'りんご', 'orange': 'オレンジ'}
                          

dict.fromkeys()で辞書を初期化する

dict.fromkeys()はリストやタプルを第一引数に、初期値を第二引数に渡すことで、第一引数のリストをキーに、第二引数の初期値を値にして辞書を初期化します。

実際にやってみましょう。

                            dict = dict.fromkeys(["t1", "t2", "t3"], 0)print(dict)
                          
                            {'t1': 0, 't2': 0, 't3': 0}
                          

第一引数のt1, t2, t3を、第二引数の0で初期化しました。

Pythonの辞書(dict)の使い方

Pythonの辞書(dict)の使い方

初期化した辞書の使い方を見ていきましょう。

要素の参照

要素の参照はキーを 辞書[キー] のように指定します。

                            subjects = {    "Japanese":68,    "Math":32,    "Social Studies":89,    "Science":91,    "English":41}print(subjects["Math"])print(subjects["Science"])
                          
                            3291
                          

辞書でもfor..inで全ての要素を参照できますが、辞書をfor..inで一つずつ取得できるのは値ではなく「キー」の方です。値を取得する場合は取得したキーを辞書に渡すことで取得できます。

                            subjects = {    "Japanese":68,    "Math":32,    "Social Studies":89,    "Science":91,    "English":41}for key in subjects: #キーが取得できる    value = subjects[key] #キーを使って値を取得する    print(key + ":" + str(value))
                          
                            Japanese:68Math:32Social Studies:89Science:91English:41
                          

また、キーと値をそれぞれリストに変換することもできます。

キーを取得する場合はkeys()、値を取得する場合はvalues()を使います。

                            subjects = {    "Japanese":68,    "Math":32,    "Social Studies":89,    "Science":91,    "English":41}keys = list(subjects.keys()) #list()で変換values = list(subjects.values()) #list()で変換print(keys)print(values)
                          
                            ['Japanese', 'Math', 'Social Studies', 'Science', 'English'][68, 32, 89, 91, 41]
                          

要素の追加・更新

辞書は 辞書[キー] = 値 とすることで要素の追加や更新ができます。

指定したキーが存在する場合は更新、存在しない場合は追加になります。

                            subjects = {    "Japanese":68,    "Math":32,    "Social Studies":89,    "Science":91,    "English":41}subjects["Math"] = 100 #Mathは存在するので更新subjects["Art"] = 2 #Artは存在しないので追加print(subjects)
                          
                            {'Japanese': 68, 'Math': 100, 'Social Studies': 89, 'Science': 91, 'English': 41, 'art': 2}
                          

要素を削除する

要素を削除するには次のようにします。

書式del 辞書[キー]

実際に削除してみましょう。

                            subjects = {    "Japanese":68,    "Math":32,    "Social Studies":89,    "Science":91,    "English":41}del subjects["Social Studies"]del subjects["Japanese"]print(subjects)
                          
                            {'Math': 32, 'Science': 91, 'English': 41}
                          

また、pop()を使えばただ削除するだけでなく、辞書から要素を取り出しつつ削除することができます。

                            subjects = {    "Japanese":68,    "Math":32,    "Social Studies":89,    "Science":91,    "English":41}science_score = subjects.pop("Science")print(subjects)print(science_score)
                          
                            {'Japanese': 68, 'Math': 32, 'Social Studies': 89, 'English': 41}91
                          

 

全ての要素を削除したい場合はclear()を使います。

                            subjects = {    "Japanese":68,    "Math":32,    "Social Studies":89,    "Science":91,    "English":41}subjects.clear()print(subjects)
                          
                            {}
                          

全て消えると中括弧だけ残ります。

キーが存在するか確認する

存在しないキーで辞書を参照しようとすると「KeyError」になってしまいます。

try~catchで回避することも可能ですが、in演算子を使うことで、先にキーが存在するかどうかをチェックすることができます。

                            subjects = {    "Japanese":68,    "Math":32,    "Social Studies":89,    "Science":91,    "English":41}print("Japanese" in subjects) #存在するprint("Art" in subjects) #存在しない
                          
TrueFalse

また、キーが存在する場合は値を取得し、存在しない場合はNoneを返すget()を使うこともできます。どういった方法でKeyErrorを回避するかはその時々によって変わってきます。

                            subjects = {    "Japanese":68,    "Math":32,    "Social Studies":89,    "Science":91,    "English":41}print(subjects.get("Japanese"))print(subjects.get("Art"))
                          
                            68None
                          
Tags: dict key list tuple value イテラブル タプル リスト 辞書
Previous Post

【Python初心者向け】タプル(tuple)の使い方を徹底解説!

Next Post

5Gは日本でいつから始まる?スマホの買い替えは必要?5Gの疑問を徹底解説!

fukii

fukii

Next Post
5Gはいつから日本で始まる?買い替えは必要?疑問を徹底解説!

5Gは日本でいつから始まる?スマホの買い替えは必要?5Gの疑問を徹底解説!

コメントを残す コメントをキャンセル

人気記事

  • 【作業効率化に最適】LGの29インチウルトラワイドモニターを徹底レビュー

    【作業効率化に最適】LGの29インチウルトラワイドモニターを徹底レビュー

    0 shares
  • 【デュアルスクリーンの4Kアクションカメラ】OSMO ACTIONを徹底レビュー

    0 shares
  • プログラミングスキルを身につけて副業に活かす、Progateの紹介

    0 shares
  • 【N高校】プログラミングコースって実際どうなの?

    0 shares
  • 【プロの映像を簡単に制作】DJIのRONIN-SCを徹底レビュー

    0 shares

カテゴリー

  • IoT/ガジェット (160)
  • Webサービス (70)
  • お知らせ (4)
  • プログラミング (40)
  • モバイルアプリ (41)
  • 自動運転 (2)
  • 通信技術 (18)
  • 電気自動車 (3)

タグ

5G AI Android Apple Bluetooth Chrome Chrome拡張機能 DJI ELECOM GoodNotes5 Google GoPro IoT iPad iPad OS iPad Pro iPhone Java Javascript kickstarter list NumPy ozmoaction pip Python Twitter Wi-Fi Wi-Fiルーター YouTube アクションカメラ アプリ オススメ キックスターター クラウドファンディング グーグル スマートフォン ディープラーニング プログラミング プログラミング言語 モバイルバッテリー リスト リモートワーク リモート会議 ワイヤレス充電器 新型コロナウイルス

WebHackはインターネットサービスやガジェットなどITトレンド情報をお伝えしていきます。

Category

  • IoT/ガジェット
  • Webサービス
  • お知らせ
  • プログラミング
  • モバイルアプリ
  • 自動運転
  • 通信技術
  • 電気自動車

Follow Us

  • プライバシーポリシー
  • お問い合わせ

Copyright © 2012 - 2017, JNews - Premium WordPress news & magazine Jegtheme .

No Result
View All Result
  • お知らせ
  • IoT/ガジェット
  • Webサービス
  • 通信技術
  • プログラミング
  • 電気自動車

Copyright © 2012 - 2017, JNews - Premium WordPress news & magazine Jegtheme .