2009年10月22日木曜日

ディクショナリ型

ディクショナリ型
連想配列みたいなもの。JavaでいうとHashMap型。PHPでいうとarrayでインデックスに文字列を使った状態。

{}で要素が入っていないディクショナリ型のオブジェクトを作成。要素はあとから自由に追加できる。
>>> data = {}
>>> data["a"] = "abc"
>>> data
{'a': 'abc'}

オブジェクトを作らずにいきなり追加はできない。(PHPだとこれでもOK)
>>> data2["a"] = "abc"
Traceback (most recent call last):
File "", line 1, in
NameError: name 'data2' is not defined


最初から要素を入れておくことも可能
>>> data = {"a": "abc", "b": "bcd"}
>>> data
{'a': 'abc', 'b': 'bcd'}

中の要素へのアクセスは以下のようにする。
>>> data['a']
'abc'
>>> data['b']
'bcd'

ディクショナリの入れ子構造も可能
>>> data = {"a":{"b":"c"}}
>>> data["a"]["b"]
'c'

ディクショナリ内にリストを入れることも可能
>>> data = {"a":[1,2,3]}
>>> data["a"][1]
2
>>> data["a"][2]
3

ディクショナリ内に自らを入れることも可能(非推奨)
>>> data = {"a":"b"}
>>> data["b"] = data
>>> data
{'a': 'b', 'b': {...}}

再起構造になっているため特殊な表示形式になっている。こういうデータ構造を作る場合は、無限ループや無限再帰呼び出しが発生しないように十分注意する必要がある。

0 件のコメント:

コメントを投稿