今日も見に来て下さって、ありがとうございます。石川さんです。
今日は、Pythonのディクショナリを少し紹介します。ディクショナリはキーと値のペアを格納できるコレクションです。はじめてこのディクショナリを知った時は、便利すぎて衝撃でした。
作成方法と使い方
In [1]: d = { "A": "Apple", "B": "Boy", "C": "Color" }
In [2]: d
Out[2]: {'A': 'Apple', 'B': 'Boy', 'C': 'Color'}
ディクショナリを作るには、上記のようにキー:値のペアをカンマで区切って並べ、波括弧「{}」で囲みます。それぞれの要素を取り出すには、キーを以下のように指定していきます。
In [3]: d["A"]
Out[3]: 'Apple'
In [4]: d["B"]
Out[4]: 'Boy'
In [5]: d["C"]
Out[5]: 'Color'
キーだけを取り出す、値だけを取り出す、キーと値のペアを取り出すには以下のように記述します。
In [6]: d.keys()
Out[6]: dict_keys(['A', 'B', 'C'])
In [7]: d.values()
Out[7]: dict_values(['Apple', 'Boy', 'Color'])
In [8]: d.items()
Out[8]: dict_items([('A', 'Apple'), ('B', 'Boy'), ('C', 'Color')])
ちなみに、存在しないキーを指定すると、エラーになります。
In [9]: d['Z']
Traceback (most recent call last):
File "<ipython-input-168-b7ca268d4341>", line 1, in <module>
d['Z']
KeyError: 'Z'
このキーが含まれているかどうかは、inを使って確認することができます。
In [10]: 'A' in d
Out[10]: True
In [11]: 'Z' in d
Out[11]: False
値を変更するには、以下のようにします。
In [12]: d['A'] = 'Air'
In [13]: d
Out[13]: {'A': 'Air', 'B': 'Boy', 'C': 'Color'}
存在しないキーを使用すると、要素が追加されます。
In [14]: d['D'] = 'Dictionary'
In [15]: d
Out[15]: {'A': 'Air', 'B': 'Boy', 'C': 'Color', 'D': 'Dictionary'}
要素を削除するには以下のようにします。
In [16]: del d['C']
In [17]: d
Out[17]: {'A': 'Air', 'B': 'Boy', 'D': 'Dictionary'}
すべての値を削除するには、以下のようにします。
In [18]: d.clear()
In [19]: d
Out[19]: {}
ここで、「{}」が出てまいりましたが。空のディクショナリを作成するときにも「{}」が使えます。なので、すべての値を削除するもう一つのやり方として、空辞書「{}」をディクショナリ名に代入することで実現できます。
ほかのディクショナリの作成方法としては、dict()が使えます。
In [20]: dict()
Out[20]: {}
In [21]: dict(['ab','cd','ef')
Out[21]: {'a': 'b', 'c': 'd', 'e': 'f'}
In [22]: dict((['a','b'],['c','d'],['e','f']))
Out[22]: {'a': 'b', 'c': 'd', 'e': 'f'}
この他にも、タプルやリストの組み合わせが利用可能です。
値を取り出す他のやり方としては、get()があります。
In [23]: d.get('A')
In [24]: print(d.get('A'))
None
In [25]: d.get('A','a')
Out[25]: 'a'
最初の例は、キー「’A’」の値を取り出していますが、存在しないため、Noneを戻しています。インタープリターでは何も表示されないため、print()を使って確認しています。その次の例は、値がなかった時のオプションとして「’a’」を指定しています。
まとめ
ディクショナリは、とても便利ですね。連続で取り出すときの順番は保証されませんので、そこだけ注意が必要でしょうか。(順番を保証したい場合はOrderedDict()が利用できます。)