【Python入門】dictionary(辞書)の使い方。基本と応用

Pythonでは「キーと値を組み合わせたdictionary(辞書)」というものがあります。

辞書を使用することで、特定の要素を検索したり、追加や削除も簡単にできます

そもそもdictionaryって何?
dictionaryの基本的な使い方が知りたい

辞書型はリスト型に比べるとやや複雑ではありますが、覚えることで目的に沿ったコードを書くことが出来ます。

この記事では、

  • 【基礎】辞書型の使い方
  • 【発展】要素を検索、追加、削除する方法
  • 【発展】要素をソート、コピーする方法

などについても解説し、辞書とよく似た機能であるリストについても解説いたします。

dictionary(辞書)はPythonのプログラミングでも実際によく使われますので、使い方についてはよく理解しておきましょう。

※ この記事のコードはPython 3.7, Ubuntu 18.04で動作確認しました。

なお、Pythonの記事については、こちらにまとめています。

目次

前提知識:Pythonの辞書型とは

辞書(dictionary)型とは、「{}」の中にkeyとvalueの組み合わせが含まれているデータのことです。

{key1:value1,key2:value2,key3:value3}

のように、辞書型のオブジェクトを構成する要素はkeyとvalueをコロンで区切ったペアになっています。

そして、それぞれのペアはカンマで区切られています。

辞書型の基本的な使い方

では、基本的な使い方からご紹介します。

辞書型オブジェクトの作り方

辞書型オブジェクトを作るには、要素を直接「{}」内に書きます

ちなみにオブジェクトとは、classの型から作られたインスタンスのことを指します。classについても知る必要があるので、今はなんとなく「物」として考えてみてください。

mydict = {"apple":1, "orange":2, "banana":3}

これで、mydictという辞書型のオブジェクトが出来上がります。

辞書型の要素にアクセスする方法

辞書型オブジェクトは、リスト型のように多くの要素を持つことが出来ます。

しかしリスト型とは違って辞書型オブジェクトには順序がありません。なので、要素を取り出すためにはkeyを使うことになります。

mydict = {"apple":1, "orange":2, "banana":3}
val = mydict["apple"]
print(val)

実行結果

1

このコードでは、valという変数にkeyを指定して代入しています。そしてそのvalをprint関数で表示させています。

注意したいのは、要素へのアクセスの際は「{}」ではなく「[]」を使うということです。Pythonの辞書型オブジェクトでは、存在しないkeyを指定するとエラーが発生するので気をつけましょう。

辞書型の応用的な使い方

辞書型を検索する方法

辞書の中からある特定の要素を検索して取り出したい場合は、in演算子とkeysメソッド、valuesメソッドを使うと良いでしょう。

辞書型のkeysメソッドを使うことによって、辞書の中からマッチするkeyを検索することができます。

mydict = {"apple":1, "orange":2, "banana":3}
print("orange" in mydict.keys())

実行結果

True

このコードでは、辞書型のkeysメソッドを使っています。keysメソッドは、指定した辞書型オブジェクトに含まれているすべてのkeyをリスト型として返します。

そしてin演算子を使うことで、orangeというkeyがそのリストに含まれているかどうか確認します。見てみると、orangeはmydictの中に存在するのでTrueと表示されました。

もう一つの検索方法として、辞書型のvaluesメソッドを使う方法について解説します。辞書の中からマッチするvalueを検索することができます。

mydict = {"apple":1, "orange":2, "banana":3}
print(5 in mydict.values())

実行結果

False

このコードでは、辞書型のvaluesメソッドを使用しました。

valuesメソッドは、指定した辞書型オブジェクトに含まれているすべてのvalueをリスト型として返します。in演算子を使うことで、5という値がそのリストに含まれているかどうか確認します。

5はmydictの中に存在しないので、Falseと表示されました。

辞書型に要素を追加する方法

辞書型にkeyとvalueを追加する方法

ここでは辞書に新しくkeyとvalueを追加する方法について見ていきましょう。

mydict = {"apple":1, "orange":2, "banana":3}
mydict["peach"] = 4
print(mydict)

実行結果

{"apple":1, "orange":2, "banana":3, "peach":4}

こちらのコードでは、新しい要素である「peach:4」を追加しました。

要素へのアクセスと同じく、「[]」を使います。括弧の中にはkeyを、「=」の右にはvalueを設定します。また、setdefaultメソッドを使って新しい要素を追加することも出来ます。

mydict = {"apple":1, "orange":2, "banana":3}
mydict.setdefault("peach", 4)
print(mydict)

実行結果

{"apple":1, "orange":2, "banana":3, "peach":4}

正常に辞書に要素が追加されましたね。

setdefaultメソッドは、二つの引数を受け取ります。第一引数は要素のkey、第二引数は要素のvalueです。また、setdefaultメソッドは、要素の値を返します。

このコードでも4が表示されましたね。このメソッドは、keyが存在する場合は要素を追加せずに既存の値を返します。

keyが存在しない場合は、第二引数の値を返し、辞書にも要素を新しく追加するのでとても便利なメソッドです。

辞書型の要素に辞書を追加する方法

先ほどのサンプルコードで追加したのは、シンプルなkeyとvalueセットでした。

しかし、既存の辞書型オブジェクトに新たな要素として、また別の辞書を追加することも出来ます

mydict1 = {"apple":1, "orange":2, "banana":3}
mydict2 = {"peach":4, "cherry":5, "melon":6}
mydict1["dict"] = mydict2
print(mydict1)

実行結果

{'orange': 2, 'dict': {'melon': 6, 'cherry': 5, 'peach': 4}, 'apple': 1, 'banana': 3}

こちらのコードでは、通常通り新しい要素を追加する方法で、値に辞書型オブジェクトであるmydict2を追加しました。

ご覧いただけるように、dictというkeyに結び付けられた値は「{}」の中に含まれているので、辞書型オブジェクトであることが確認できます。

このようにすると、辞書型の要素にリストやセット、タプルなどを追加する事もできます。

辞書型の要素を削除する方法

辞書の要素を削除するには、popメソッド、clearメソッドを使っていきます。

まずはpopメソッドを使った取り出しを見ていきます。

こちらのサンプルコードを見てみましょう。

mydict = {"apple":1, "orange":2, "banana":3}
mydict.pop("orange")
print(mydict)

実行結果

{'apple': 1, 'banana': 3}

popメソッドで引数にkeyを指定すると、指定したkeyが辞書から削除されていることがわかると思います。

次にclearメソッドについて、見ていきましょう。clearメソッドは、すべての要素を削除することが出来ます

こちらのサンプルコードを見てみましょう。

mydict = {"apple":1, "orange":2, "banana":3}
mydict.clear()
print(mydict)

実行結果

{}

すべて削除されていることが確認できましたね。

辞書型のソート

辞書型には順序がありませんが、ソートで順序を並べることは出来ます。

mydict = {3:"apple", 1:"orange", 2:"banana"}
sortedDict = sorted(mydict.items())
print(sortedDict)

実行結果

[(1, 'orange'), (2, 'banana'), (3, 'apple')]

sorted関数を使うと、keyが昇順にソートされました。

しかし、戻り値は辞書型ではなくリスト型だということに気をつけましょう。

このままPythonを学び続けて大丈夫?

なぜPythonを学ぶのか?

あなたがPythonを学ぶ理由は何でしょうか?

  • Pythonが人気だからとりあえず学んでいる
  • AIや機械学習の分野に興味があるから

Pythonは初心者向けの言語と言われています。その理由としてシンプルでわかりやすい構文や、実用的なライブラリが豊富なことが挙げられ、実際に学びやすい言語です。

しかし、もしあなたが機械学習に興味があって、とくに知識も無いまま学習を進めると、挫折する可能性が高いと言えます。

機械学習の分野はプログラミング以外にも、専門的な知識や数学の知識も必要になります。ただなんとなく学習していると早い段階でつまづきやすく、そのまま挫折してしまうなんてことも…。

そのため、挫折しないためには、

  • 機械学習に最適な学習環境を用意する
  • 必要なライブラリ・ツールを導入する
  • わからないことを質問できるメンターを見つける

などが必要になります。

効率よく学びたいなら、無料カウンセリングがおすすめ

このままPythonを学び続けていいのかな…
まだまだ知りたいことがたくさんある!
もっと詳しくPythonについて知りたい!

といった悩みや願望を持っている方は、弊社「侍エンジニア」をご利用下さい。

侍エンジニアでは、

  • 現役エンジニアによるマンツーマンレッスン
  • キャリアアドバイザーによる転職・就職支援
  • 業界屈指のフリーランス・起業サポート

を受けることができます。

業界屈指のコンサルタントから、効率的な学習方法や仕事獲得術、今後のキャリアまでさまざまな疑問を相談してみませんか?遠方の方でもオンラインで受講できます!お気軽に受講下さい。

侍エンジニア
無料カウンセリングを受ける

まとめ

今回は、辞書型オブジェクトの基本について学びました。

辞書型を使いこなせるようになると、リスト型だけを使ったプログラムよりも目的がはっきりとしたプログラムを書くことが出来ます。要素の取り出し、削除は覚えることも多いですが、身につけると戦力になることは間違いありません。

辞書型について忘れてしまったら、ぜひこの記事を読み返してみてください!

この記事を書いた人

イタリア在住15年目の22歳です。イタリアの大学で情報科学&応用数学を学んでいます。主にJavaScriptやPythonについての記事を書いたりしています。

目次