型の種類 辞書

 辞書を使う

 辞書も、リストと同様に複数の要素を収めるために利用するデータ型です。リストやタプルと同様にさまざまなオブジェクトを収めることができます。辞書は、インデックスの代わりにキー(key)で要素を管理します。そのためキーが一つ決まれば、値は一つ決まらなければいけません。逆に別々キーが同じ値をもっていても、問題はありません。
 辞書の定義には、中カッコ("{"や"}")で囲み、キーと対応する値をコロン(:)で区切り、複数の要素はカンマ(,)で区切ります。


 >>> d = {"c":"abc","b":"def"}
 >>> d
 {'b': 'def', 'c': 'abc'}
 >>> d = {"c":"abc","b":"def", "c":"xyz"}
 >>> d
 {'b': 'def', 'c': 'xyz'} ←キーが同じ場合、最後の定義が反映されます。
 >>> d = {"c":"abc","b":"def", "a":"abc"}
 >>> d
 {'a': 'abc', 'b': 'def', 'c': 'abc'} ←値が重複していても大丈夫です。


キーを指定して要素を取り出す
 キーを指定して要素を取り出す方法は、角カッコの中にキーを記入します。

 >>> d = {"c":"abc","b":"def", "a":"abc"}
 >>> d
 {'a': 'abc', 'b': 'def', 'c': 'abc'}
 >>> d['a']
 'abc'
 >>> d["e"] ←存在しないキーで検索するとエラーになります。
 Traceback (most recent call last):
  File , line 0, in <stdin>##12
 KeyError: e


キーを使って要素を追加したり、削除する
 すごく簡単です。百聞は一見にしかず。例を見ればすぐわかります。

 >>> d = {"c":"abc","b":"def", "a":"abc"}
 >>> d
 {'a': 'abc', 'b': 'def', 'c': 'abc'}
 >>> d["e"] = "ghi" ←追加する場合
 >>> d
 {'a': 'abc', 'b': 'def', 'c': 'abc', 'e': 'ghi'}
 >>> del(d["c"]) ←削除する時はdelを使います。
 >>> d
 {'a': 'abc', 'b': 'def', 'e': 'ghi'}
 >>> d["b"] = "jkl" ←変更する場合
 >>> d
 {'a': 'abc', 'b': 'jkl', 'e': 'ghi'}


 辞書のメゾットを使う

 D.items()
 Dが持っているキーと要素をペアにしたタプルを、リストにして返します。

 D.keys()
 Dのキーの一覧をリストとして返します。

 D.values()
 Dの要素の一覧をリストにして返します。

 D.has_key(キー)
 Dが持っているキーと要素をペアにしたタプルか確認します。もし持っていた場合はTrue(真)を返します。

 >>> d = {"a":"abc", "d":"def", "g":"ghi"}
 >>> d.items()
 [('a', 'abc'), ('d', 'def'), ('g', 'ghi')]
 >>> d.keys()
 ['a', 'd', 'g']
 >>> d.values()
 ['abc', 'def', 'ghi']
 >>> d.has_key('a')
 True
 >>> d.has_key('b')
 False ←存在しないキーの場合は、当然『False』です。


 D.get(キー[,要素])
 [ ]で囲ったところは省略可能です。
 Dからキーに割り当てた要素を取り出します。"D[キー]"と同じ働きをしますが、違うのはDにキーが存在しなかった際の動作です。キーが存在しなかった場合、オプションの引数が与えられていると、オプションの要素を返します。オプションの要素もない場合はNoneを返します。
(NoneをIronPythonは「何も値を持たない」と解釈します。)

 D.setdefault(キー[,要素])
 [ ]で囲ったところは省略可能です。
 Dからキーに割り当てた要素を取り出します。getメゾットと同じことをします。それに加えて、キーを新規に登録して値を代入します。

 D.update([辞書の定義])
 Dに対して、引数で指定したキーが存在する場合は、要素が上書きされ、キーが存在しない場合は、キーが追加されます。

 >>> d = {"a":"abc", "d":"def", "g":"ghi"}
 >>> d.get('a')
 'abc'
 >>> d.get('b') ←存在しないキーで検索するとNoneを返すので、値はありません。
 >>> d.get('b',1) ←オプションの値を返します。
 1
 >>> d.setdefault('b')
 >>> d
 {'a': 'abc', 'd': 'def', 'g': 'ghi', 'b': None} ←『None』が追加されます。
 >>> d.update({'b': 'bcd','j': 'jkl'})
 >>> d
 {'a': 'abc', 'd': 'def', 'g': 'ghi', 'b': 'bcd', 'j': 'jkl'}
  ↑'b'の要素が変更され、'j'が追加されます。