Python 辞書型のメソッド

Python学習【365日チャレンジ!】23日目のマスターU(@Udemy11)です。

ネットワーク環境の再構築が完了して、ひと安心しているところですが、すべてのデータを0に書き換える【ゼロ消去】でTimeCapsuleのハードディスクを初期化したら9時間もかかってしまいました。

これからどう使うか悩んでいるのですが、メルカリで売ってみよっかなと思っています。もちろんジャンク扱いで(笑)

それでは、今日は辞書型の基本的なメソッドです。

昨日の復習

辞書型の基本を学習しました。

辞書型では、一つの対になったデータを格納することができますが、それが【key】と【value】という呼び方であることを今日の学習で知りました。

>>> d = {'x': 10, 'y', 20}
>>> d
{'x': 10, 'y': 20}
>>> d['x']
10
>>> d['z'] = 30
>>> d
{'x': 10, 'y': 20, 'z': 30}

bracesの波括弧でくくってkeyとvalueを入れると辞書型に定義されました。

値を追加するときは、bracketの角括弧にkeyを入れて、イコールでvalueを記述すれば、後ろにkeyとvalueが追加されました。

>>> b = dict(x=10, y=20)
>>> b
{'x': 10, 'y': 20}
>>> c = dict([('x', 10), ('y', 20)])
>>> c
{'x': 10, 'y': 20}

辞書型のオブジェクトであるdictを使って2種類の辞書型の定義方法がありました。

リストの中にタプルを入れる方法は一般的ではないものの、頭の片隅に入れておけば、このパターンのコードに出会ったときにも理解できますね。

それでは、代表的な辞書型の代表的なメソッドを学習していきましょう!

keys()とvalues()

辞書型に格納するデータは、対になったkeyとvalueです。
メソッドkeys()とvalues()を使えばkeyやvalueを抽出することができます。

>>> d1 = {'x': 10, 'y': 20,}
>>> d1.keys()
dict_keys(['x', 'y'])
>>> d1.value()
dict_values([10, 20])

辞書型の同期・update()

辞書型は、2つの変数を同期することが可能です。
辞書型の2つの変数に同じkeyがある場合は値をアップデートして、最初の変数にkeyの値が存在しない場合は後ろに追加するといった具合です。

>>> d2 = {'x': 10, 'y': 20}
>>> d3 = {'x': 100, 'z': 30}
>>> d2.update(d3)
>>> d2
{'x': 100, 'y': 20, 'z':30}
>>> d3
{'x': 100, 'z': 30}

変数d2に変数d3を同期するイメージですね。

最初に定義していた変数d2はアップデートされて新しい辞書型データに書き換えられますが、変数d3はそのままです。

valueの抽出・get()

辞書型に収められたkeyを指定すれば、対になったvalueを抽出することができますが、リスト型やタプル型と同じようにbracketの角括弧で指定するやり方とget()メソッドを使うやり方があります。

>>> d4 = {'x': 10, 'y': 20, 'z': 30}
>>> d4['x']
10
>>> d4.get('x')
10
>>> d4.get('t')
>>> type(d4.get('t'))
<class 'NoneType'>

braketで抽出する場合は、keyが存在しなければエラーになりましたが、get()で抽出する場合、対話型では何も表示されませんが、Noneを返すNone型になります。

pop()とdel

pop()はリストでもやりましたが、定義した変数から指定したkeyの値を取り出すメソッドになり、元の変数が変わってしまいます。
一方、delも変数からkeyとvalueを取り出します。

pop()が中の値を取り出すだけに対して、delは変数そのものを削除することができるので、使い方を注意する必要があります。

>>> d4 = {'x': 10, 'y': 20, 'z': 30}
>>> d4.pop('x')
10
>>> del d4['y']
>>> d4
{'z': 30}
>>> del d4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'd4' is not defined

ちなみに、popでもdelでも中のkeyを指定して最後の値まですべて削除するとどうなるかというと、空の辞書型変数だけが残ることになります。

clear()で値を空に

いくつものkeyとvalueを設定した辞書型変数の中身を空にしたいとき、delだと変数そのものが消去されるし、popで取り除くには何度も繰り返さないといけません。

そんなときに活躍するのがclear()です。

>>> d5 = {'x': 10, 'y': 20, 'z': 30}
>>> d5.clear()
>>> d5
{}

いくつもの値が格納された辞書型の値をすべて空にしてしまうには便利なメソッドなので、なにか回答を入れていき、データを取り込んだあとに、空にするといったときに使えるメソッドですね。

inで検索

辞書型のkeyの中に、指定した値があるかどうかを調べられるのが【in】です。

>>> d6 = {'x': 10, 'y': 20, 'z': 30}
>>> 'x' in d6
True
>>> 'a' in d6
False

値があればTrueを返し、値がなければFalseを返します。
valueは検索できないのか実験的に試してみたところ、Falseしか返ってきませんでしたので、【in】でvalueを検索することはできないようです。

メソッドは奥が深い

新しいことがたくさんあったので、これだけ一気に覚えるのはなかなか難しいので、何度も繰り返しタイピングするしかないと思っています。

講座を受講しながら、Pythonistaでコードを打ち込んで、学習の記録であるブログを投稿するときは、Pycharmかターミナルで実際に打ち込んで動作確認しながら記事を書いています。

3週間を経過して、なんとなく習慣化してきた感じがしますが、ここで気を抜かず、しっかりと学習していきたいと思います。

それでは、Good Python!