環境
Python 3.6.5 :: Anaconda, Inc.
$ python
Python 3.6.5 |Anaconda, Inc.| (default, Apr 26 2018, 08:42:37)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
このようにインタープリタを起動する。
注意!コードに含まれる「>>>」や「...」はインタープリタの表示を再現しているものなので、SublimeText、VSCode、Pycharmなどのテキストエディタでコードを書く場合は省略可能。
辞書型の基礎
辞書を作る
>>> d = {'x': 10, 'y': 20}
>>> d
{'x': 10, 'y': 20}
>>> type(d)
<class 'dict'>
このような形式でキーと値を入力し、Pythonでは辞書を作ることができる。
typeで調べたところ'dict'と出力されるが、これがdictionaryすなわち辞書のこと。
辞書中の特定の値を出力する
>>> d = {'x': 10, 'y': 20}
>>> d
{'x': 10, 'y': 20}
>>> d['x']
10
>>> d['y']
20
インデックス番号ではなくキーを指定してあげることで、対応する値を出力することができる。
辞書中の特定の値を書き換える
>>> d = {'x': 10, 'y': 20}
>>> d
{'x': 10, 'y': 20}
>>> d['x'] = 100
>>> d['x']
100
>>> d['x'] = 'Bob'
>>> d
{'x': 'Bob', 'y': 20}
キーを指定した上で値を入れてあげれば書き換わる。もちろん、文字列で書き換えることも可能。
辞書に新たなキーと値を追加する
>>> d
{'x': 'Bob', 'y': 20}
>>> d['z'] = 300
>>> d
{'x': 'Bob', 'y': 20, 'z': 300}
辞書に存在しないキーを指定して値を入力してあげることで、辞書に新たなキーと値を追加することができる。
また、dに今存在しているキーは全て文字列だが、下記のように数字をキーにすることも出来る。
>>> d
{'x': 'Bob', 'y': 20, 'z': 300}
>>> d[1] = 400
>>> d
{'x': 'Bob', 'y': 20, 'z': 300, 1: 400}
辞書の作り方(別ルート)
冒頭で紹介した以外にも、下記のような書き方で辞書を作ることも出来る。
>>> dict(a=10, b=20)
{'a': 10, 'b': 20}
>>> dict([('a', 10), ('b', 20)])
{'a': 10, 'b': 20}
辞書型のメソッド
まずは辞書を作る。
>>> d = {'a': 10, 'b': 20}
>>> d
{'a': 10, 'b': 20}
辞書型のメソッドは下記のようにhelpを使うことで一覧を見ることが出来る。
>>> help(d)
Help on dict object:
class dict(object)
| dict() -> new empty dictionary
| dict(mapping) -> new dictionary initialized from a mapping object's
| (key, value) pairs
| dict(iterable) -> new dictionary initialized as if via:
| d = {}
| for k, v in iterable:
| d[k] = v
| dict(**kwargs) -> new dictionary initialized with the name=value pairs
| in the keyword argument list. For example: dict(one=1, two=2)
|
| Methods defined here:
|
| __contains__(self, key, /)
| True if D has a key k, else False.
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __eq__(self, value, /)
| Return self==value.
...
| update(...)
| D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
| If E is present and has a .keys() method, then does: for k in E: D[k] = E[k]
| If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v
| In either case, this is followed by: for k in F: D[k] = F[k]
|
| values(...)
| D.values() -> an object providing a view on D's values
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __hash__ = None
(END)
keysでキーのみ出力する
>>> d.keys()
dict_keys(['a', 'b'])
valuesで値のみ出力する
>>> d.values()
dict_values([10, 20])
updateを使って辞書を他の辞書で拡張する
>>> d
{'x': 10, 'y': 20}
>>> d2 = {'x': 1000, 'j':500}
>>> d2
{'x': 1000, 'j': 500}
>>> d.update(d2)
>>> d
{'x': 1000, 'y': 20, 'j': 500}
すでに存在しているキーの値は上書きされ、存在していないキーは値とともに辞書に追加される。