今日も見に来て下さって、ありがとうございます。石川さんです。
今日は、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()が利用できます。)