Pythonディクショナリ(辞書)

 今日も見に来て下さって、ありがとうございます。石川さんです。

 今日は、Pythonのディクショナリを少し紹介します。ディクショナリはキーと値のペアを格納できるコレクションです。はじめてこのディクショナリを知った時は、便利すぎて衝撃でした。

作成方法と使い方

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
In [1]: d = { "A": "Apple", "B": "Boy", "C": "Color" }
In [2]: d
Out[2]: {'A': 'Apple', 'B': 'Boy', 'C': 'Color'}
In [1]: d = { "A": "Apple", "B": "Boy", "C": "Color" } In [2]: d Out[2]: {'A': 'Apple', 'B': 'Boy', 'C': 'Color'}
In [1]: d = { "A": "Apple", "B": "Boy", "C": "Color" }

In [2]: d
Out[2]: {'A': 'Apple', 'B': 'Boy', 'C': 'Color'}

 ディクショナリを作るには、上記のようにキー:値のペアをカンマで区切って並べ、波括弧「{}」で囲みます。それぞれの要素を取り出すには、キーを以下のように指定していきます。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
In [3]: d["A"]
Out[3]: 'Apple'
In [4]: d["B"]
Out[4]: 'Boy'
In [5]: d["C"]
Out[5]: 'Color'
In [3]: d["A"] Out[3]: 'Apple' In [4]: d["B"] Out[4]: 'Boy' In [5]: d["C"] Out[5]: 'Color'
In [3]: d["A"]
Out[3]: 'Apple'

In [4]: d["B"]
Out[4]: 'Boy'

In [5]: d["C"]
Out[5]: 'Color'

 キーだけを取り出す、値だけを取り出す、キーと値のペアを取り出すには以下のように記述します。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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 [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 [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')])

 ちなみに、存在しないキーを指定すると、エラーになります。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
In [9]: d['Z']
Traceback (most recent call last):
File "<ipython-input-168-b7ca268d4341>", line 1, in <module>
d['Z']
KeyError: 'Z'
In [9]: d['Z'] Traceback (most recent call last): File "<ipython-input-168-b7ca268d4341>", line 1, in <module> d['Z'] KeyError: 'Z'
In [9]: d['Z']
Traceback (most recent call last):

  File "<ipython-input-168-b7ca268d4341>", line 1, in <module>
    d['Z']

KeyError: 'Z'

 このキーが含まれているかどうかは、inを使って確認することができます。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
In [10]: 'A' in d
Out[10]: True
In [11]: 'Z' in d
Out[11]: False
In [10]: 'A' in d Out[10]: True In [11]: 'Z' in d Out[11]: False
In [10]: 'A' in d
Out[10]: True

In [11]: 'Z' in d
Out[11]: False

 値を変更するには、以下のようにします。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
In [12]: d['A'] = 'Air'
In [13]: d
Out[13]: {'A': 'Air', 'B': 'Boy', 'C': 'Color'}
In [12]: d['A'] = 'Air' In [13]: d Out[13]: {'A': 'Air', 'B': 'Boy', 'C': 'Color'}
In [12]: d['A'] = 'Air'

In [13]: d
Out[13]: {'A': 'Air', 'B': 'Boy', 'C': 'Color'}

 存在しないキーを使用すると、要素が追加されます。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
In [14]: d['D'] = 'Dictionary'
In [15]: d
Out[15]: {'A': 'Air', 'B': 'Boy', 'C': 'Color', 'D': 'Dictionary'}
In [14]: d['D'] = 'Dictionary' In [15]: d Out[15]: {'A': 'Air', 'B': 'Boy', 'C': 'Color', 'D': 'Dictionary'}
In [14]: d['D'] = 'Dictionary'

In [15]: d
Out[15]: {'A': 'Air', 'B': 'Boy', 'C': 'Color', 'D': 'Dictionary'}

 要素を削除するには以下のようにします。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
In [16]: del d['C']
In [17]: d
Out[17]: {'A': 'Air', 'B': 'Boy', 'D': 'Dictionary'}
In [16]: del d['C'] In [17]: d Out[17]: {'A': 'Air', 'B': 'Boy', 'D': 'Dictionary'}
In [16]: del d['C']

In [17]: d
Out[17]: {'A': 'Air', 'B': 'Boy', 'D': 'Dictionary'}

 すべての値を削除するには、以下のようにします。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
In [18]: d.clear()
In [19]: d
Out[19]: {}
In [18]: d.clear() In [19]: d Out[19]: {}
In [18]: d.clear()

In [19]: d
Out[19]: {}

 ここで、「{}」が出てまいりましたが。空のディクショナリを作成するときにも「{}」が使えます。なので、すべての値を削除するもう一つのやり方として、空辞書「{}」をディクショナリ名に代入することで実現できます。

 ほかのディクショナリの作成方法としては、dict()が使えます。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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'}
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'}
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()があります。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
In [23]: d.get('A')
In [24]: print(d.get('A'))
None
In [25]: d.get('A','a')
Out[25]: 'a'
In [23]: d.get('A') In [24]: print(d.get('A')) None In [25]: d.get('A','a') Out[25]: 'a'
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()が利用できます。)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。