ディクショナリ #
教科書 p.142(Lesson 6.2)ディクショナリは,キーと値のペアを格納するコレクションです. 他の言語では,Map や Hash,連想配列と呼ばれることがあります. ディクショナリは,リストのインデックスの代わりに,キーと呼ばれる任意の型を用いて,対応するデータを格納します.
ディクショナリは波括弧 {}
で囲み,キーと値のペアはコロン :
で区切ります.
キーと値のペアはカンマ ,
で区切ります.
>>> dic1 = { "one": 1, "two": 2, "three": 3, "four": 4, "five": 5 }
>>> dic1
{'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5}
ディクショナリの操作 #
ディクショナリに格納されている値を取得するには,リストのインデックスの代わりにキーを指定します. 存在しないキーを指定するとエラーになります.
値を追加するときは,ディクショナリ名[キー] = 値
とします.
既存のキーに対して値を代入すると,値が上書きされます.
キー
に文字列の値をそのまま利用する場合は,ディクショナリ名["キー"]
のようにダブルクォート(シングルクォートでも良い)を忘れないようにしましょう.
>>> dic1 = { "one": 1, "two": 2, "three": 3, "four": 4, "five": 5 }
>>> dic1['one'] # 'one' というキーに対応する値(1)を取得
1
>>> dic1['six'] # 存在しないペアを取得しようとするとエラーになる.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'six'
>>> dic1['six'] = 6 # 存在しないキーに対して値を代入すると新たなペアが追加される.
>>> dic1['six']
6
>>> dic1['one'] = 10 # 既存のキーに対して値を代入すると,値が上書きされる.
>>> dic1
{'one': 10, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6}
ディクショナリの繰り返し #
ディクショナリもイテラブル(繰り返し可能なオブジェクト)であるため,for
文を用いて繰り返し処理が可能です.
ディクショナリの繰り返しには,次の3種類があります.
- キーの一覧でループする(
keys
メソッド). - 値の一覧でループする(
vlaues
メソッド). - キーと値のペアでループする(
items
メソッド).
>>> dic1 = { "one": 1, "two": 2, "three": 3, "four": 4, "five": 5 }
>>> for key in dic1.keys():
... print(key, dic1[key]) # キーとそれに対応する値を出力する.
...
one 1
two 2
three 3
four 4
five 5
>>> for key in dic1: # dic1 をそのまま for 文に指定すると,キーの一覧でループする.
... print(key, dic1[key])
...
# 出力結果は上記と同じ.
>>> for value in dic1.values():
... print(value) # 値のみを出力する.
...
1
2
3
4
5
>>> for key, value in dic1.items():
... # キーと値のペアを取得して繰り返す.in の前後に 2 つの変数を指定する.
... print(key, value) # キーと値のペアを出力する.
...
one 1
two 2
three 3
four 4
five 5