WebEngine

だらだらと綴る技術系メモ

辞書型の基本操作【Python】

f:id:web-engine:20190608210103p:plain

辞書、ひいてますか?

授業中で調べものをするときなんかに、学生時代は辞書をよく引きました。

筆者は電子辞書を持っていなかったので、国語辞典、英和辞典、漢和辞典など、それぞれ 紙媒体の辞書をカバンに入れて登下校していました。
重かったです。

年齢を重ねてからは辞書を引くこともなくなりました。
仕事で知らない単語と出会ったときは、インターネットで検索しています。

しかし、たまにぱらぱらとめくってみると面白い発見があるものです。
学生のとき描いた落書きがあったりなんかして。


Pythonには辞書(ディクショナリ)型と呼ばれるデータの型があります。

キーとデータが組み合わせになったもので、 キーを指定して、値を参照したり、更新したりします。

環境

# python --version
# 3.5.1


以下は、コマンドライン上で検証したものです。
このような辞書を使用します。

>>> dict = {'tanaka':10, 'yasuhara':5, 'kanzaki':17}


1. 要素数の取得

構文:len(辞書)

>>> len(dict)
3


2. 対象辞書のキーをすべて取得

構文:辞書.keys()

>>> dict.keys()
dict_keys(['tanaka', 'yasuhara', 'kanzaki'])


3. 対象辞書の値をすべて取得

構文:辞書.values()

>>> dict.values()
dict_values([10, 5, 17])


4. 対象辞書のキーと値をすべて取得

構文:辞書.items()

>>> dict.items()
dict_items([('tanaka', 10), ('yasuhara', 5), ('kanzaki', 17)])


5. 指定したキーの値を取得

構文:辞書.get(キー名)

>>> dict.get('kanzaki')
17

存在しないキー名を指定するとなにも返さない。

>>> dict.get('hoge')
>>> 

筆者はこのように取得することがほとんど。

>>> dict['kanzaki']
17


6. キーの値を取得し、辞書から削除する

構文:辞書.pop(キー名)

>>> dict.pop('yasuhara')
5
>>> dict
{'tanaka' : 10, 'kanzaki' : 17}


要素を取得する必要のないときはdel(辞書[キー名])を使う。

>>> del(dict['yasuhara'])
>>>


7. 新規のキー、値の設定

構文:辞書.setdefault(キー名[, 値])
引数に入れたキー名が、辞書に登録されていない場合、新しく辞書に追加される。

>>> dict.setdefault('miyamoto', 23)
23
>>> dict
{'miyamoto' : 23, 'tanaka' : 10, 'yasuhara' : 5, 'kanzaki' : 17}

yasuharaが存在しているのは、popメソッドを使ったあと、再追加したものを使っているからです)

辞書内に登録済みのキーを設定しようとすると、その値を返します。

>>> dict.setdefault('tanaka', 9)
10


上書きしたい場合はメソッドを使わずに記述。

>>> dict['tanaka'] = 9


8.辞書のループ処理

キーを反復処理させたい場合、keys()メソッドを使用。

for key in dict.keys():
  print(key)


値を反復処理させたい場合、values()メソッドを使用。

for val in dict.values():
  print(val)


キーと値を反復処理させたい場合、items()メソッドを使用。

for item in dict.items():
  print(item)

キーと値を別々に取得したい場合。

for key, val in dict.items():
  print(key, ' : ', val)


まとめ

辞書型自体はよく使いますが、get()メソッドやsetdefault()メソッドなど覚えていないものも 多かったです。

プログラミング言語の辞書である公式ドキュメントを見直すことで発見できるので、 隙間時間に確認したいと思いました。

参考