初心者のためのpython入門

自分がつまづいたところやつまづきやすいところを中心に書いていきます。また、役に立つライブラリの紹介などをしていきます。

辞書

辞書について

今回は、辞書について書いていきます。
辞書は、個々の値に一意なキーを与えたリストだと考えることができます。
リストでは、オフセットを使って要素を操作しました。
一方、辞書では順序が管理されていないので、キーを用いて要素を操作します
キーは文字列の場合が多いですが、イミュータブルなオブジェクトなら全てキーにすることができます。
辞書自体はミュータブルなので、リストと同様にキーや値を追加や削除、変更することができます。

辞書の作成

辞書は、{}またはdict()を使うことにより作成することができます。dict()関数を使うことにより、2要素のリストのリストやタプルのタプル、タプルのリストなどをdict型に変換できます。
また、2字の文字列のリストやタプルもdict型に変換できます。要素の数や文字列の長さが2でなければエラーになります。

>>> sample_dict1 = {'key': 'value'}
>>> sample_dict1
{'key': 'value'}
>>> sample_dict2 = {0: 'zero'}
>>> sample_dict2
{0: 'zero'}
>>> sample_dict3 = {}
>>> sample_dict3
{}
>>> sample_dict4 = {'zero': 0}
>>> sample_dict4
{'zero': 0}

>>> list = [['one', 1], ['two', 2], ['three', 3]]
>>> dict(list)
{'one': 1, 'two': 2, 'three': 3}
>>> tuple = (('one', 1), ('two', 2), ('three', 3))
>>> dict(tuple)
{'one': 1, 'two': 2, 'three': 3}
>>> list2 = ['11', '22', '33']
>>> dict(list2)
{'1': '1', '2': '2', '3': '3'}

>>> list3 = ['111', '222', '333']
>>> dict(list3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: dictionary update sequence element #0 has length 3; 2 is required

要素の追加と変更

要素を追加・変更する方法は簡単です。

上記のようにすることで、keyに対してvalueを設定することができます。既存のkeyがある場合はvalueの変更で、ない場合は追加となります。

>>> prime = {'two': 2, 'three': 3}
>>> prime['five'] = 5
>>> prime
{'two': 2, 'three': 3, 'five': 5}
>>> prime
{'two': 2, 'three': 3, 'five': 5, 'seven': 6}
>>> prime['seven'] = 7
>>> prime
{'two': 2, 'three': 3, 'five': 5, 'seven': 7}

辞書の結合

update()により辞書を結合することができます。

  • dict1.update(dict2): dict1にdict2を結合する。同じキーを持つものが存在する場合は、dict2が優先される。
>>> prime1 = {'two': 2, 'three': 3}
>>> prime1 = {'two': 2, 'three': 3, 'five': 4}
>>> prime2 = {'five': 5, 'seven': 7}
>>> prime1.update(prime2)
>>> prime1
{'two': 2, 'three': 3, 'five': 5, 'seven': 7}

要素とキーの削除

要素を削除するには、delclear()を使います。

  • del dict[key]: 指定したkeyに対応するvalueが削除されます。
  • dict.clear(): 辞書から全てのキーと値が削除されます。(dict = {}でも同じ)
>>> del prime1['seven']
>>> prime1['seven']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'seven'
>>> prime1
{'two': 2, 'three': 3, 'five': 5}
>>> prime1.clear()
>>> prime1
{}

値の取得

要素を取得するには、キーで指定します。 全ての値を取得するには、values()を使います。

  • dict['key']: dictの中からkeyに対応するものが返される。対応するものがなければ例外が発生する。
  • dict.values(): dictに含まれる全ての値を返す。
>>> prime = {'two': 2, 'three': 3}
>>> prime['two']
2
>>> prime['five']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'five'
>>> prime.values()
dict_values([2, 3])

キーの取得

キーを取得するには、keys()を使います。

  • dict.keys(): dictに含まれる全てのキーを返す。
>>> prime.keys()
dict_keys(['two', 'three'])

キーと値の取得

キーと値をペアで取り出すには、items()を使います。

  • dict.items(): dictに含まれるキーと値のペアを返す。
>>> prime.items()
dict_items([('two', 2), ('three', 3)])

最後に

お疲れ様でした。次回は集合の説明です。集合が終われば制御構造の説明をします。ここから面白くなってくるので頑張りましょう。