ディクショナリ#
教科書 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メソッド)。 - 値の一覧でループする(
valuesメソッド)。 - キーと値のペアでループする(
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