辞書型オブジェクト(ディクショナリ)
辞書型オブジェクトとは
複数の要素をキーと呼ばれる識別子にて管理するものです。(要素間には順序は存在せず、キーを指定することによりデータアクセスします。)
辞書型オブジェクトの作成
辞書型のオブジェクトを作成するには次のように行います。
{キー1:値1, キー2:値2, ...}
括弧{}で囲んだ中に要素をカンマ(,)で区切って記述すると要素は値とキーのペアで構成されます。
また値とキーはコロン(:)で区切ります。
例)
{キー1:値1, キー2:値2, ...}
括弧{}で囲んだ中に要素をカンマ(,)で区切って記述すると要素は値とキーのペアで構成されます。
また値とキーはコロン(:)で区切ります。
例)
# coding: utf-8 dict = {"real":75, "join":82}
上記ではキーが「real」で値が「75」の要素と、キーが「join」で値が「82」の要素の2つの要素を持つ辞書型のオブジェクトを作成しています。
辞書型オブジェクトの使用
≪値の取出し≫
要素に割り当てられたキーを指定することで行います。
例)
辞書オブジェクト[キー]
具体的には次のように記述します。
要素に割り当てられたキーを指定することで行います。
例)
辞書オブジェクト[キー]
具体的には次のように記述します。
# coding: utf-8 dict = {"real":75, "join":82}value = dict["real"]
上記ではキーが「real」の要素の値を取得しています。
なお存在しないキーを指定して値を取得しようとすると「KeyError」が発生します。
※キーの存在チェックを実施し、取得する必要がありますが、例外を発生させない方法としてgetを使用する方法もあります。
(getの場合キーが存在しない場合も例外は発生しません)
なお存在しないキーを指定して値を取得しようとすると「KeyError」が発生します。
※キーの存在チェックを実施し、取得する必要がありますが、例外を発生させない方法としてgetを使用する方法もあります。
(getの場合キーが存在しない場合も例外は発生しません)
# coding: utf-8 print hash.get('eggs')
辞書オブジェクトに要素を追加するには、現在存在しないキーを指定して値を代入します。
辞書オブジェクト[キー] = オブジェクト
既に存在しているキーを指定して要素を取得しオブジェクトを代入すると、
そのキーに対する値が変更されることになります。
具体的には次のように記述します。
辞書オブジェクト[キー] = オブジェクト
既に存在しているキーを指定して要素を取得しオブジェクトを代入すると、
そのキーに対する値が変更されることになります。
具体的には次のように記述します。
dict = {"real":75, "join":82} dict["collaboration"] = 89
上記の場合はキーが「collaboration」で値が「89」の新しい要素が追加されます。
<辞書オブジェクトの連結>
辞書オブジェクトに他の辞書オブジェクトの要素を連結させることも可能です。
(辞書型で用意されている「update」メソッドを使います。)
辞書オブジェクト.update(連結する辞書オブジェクト)
「update」メソッドの引数に指定した辞書オブジェクトに含まれる要素を対象の辞書オブジェクトに連結します。
具体的には次のように記述します。
<辞書オブジェクトの連結>
辞書オブジェクトに他の辞書オブジェクトの要素を連結させることも可能です。
(辞書型で用意されている「update」メソッドを使います。)
辞書オブジェクト.update(連結する辞書オブジェクト)
「update」メソッドの引数に指定した辞書オブジェクトに含まれる要素を対象の辞書オブジェクトに連結します。
具体的には次のように記述します。
dict = {"real":75, "join":82} dict.update({"collaboration":52, "!!":78})
※連結後に要素がどのように出力されるのかは決まっていません。
注)「update」メソッドの引数に指定した辞書オブジェクトと対象の辞書オブジェクト、
同じキーを持つ要素があった場合には、その要素は追加ではなく上書きとなります。
≪要素の削除≫
辞書オブジェクトの中の任意の要素を削除することが可能です。
要素を削除するには「del」文を使用します。
del オブジェクト
「del」文は引数に指定したオブジェクトを削除するための文です。
「del」文の引数には削除する辞書オブジェクトの要素を指定します。
(辞書オブジェクト[キー]の形式で取得した)
具体的には次のように記述します。
注)「update」メソッドの引数に指定した辞書オブジェクトと対象の辞書オブジェクト、
同じキーを持つ要素があった場合には、その要素は追加ではなく上書きとなります。
≪要素の削除≫
辞書オブジェクトの中の任意の要素を削除することが可能です。
要素を削除するには「del」文を使用します。
del オブジェクト
「del」文は引数に指定したオブジェクトを削除するための文です。
「del」文の引数には削除する辞書オブジェクトの要素を指定します。
(辞書オブジェクト[キー]の形式で取得した)
具体的には次のように記述します。
dict = {"yamada":75, "endou":82} del dict["endou"]
上記の場合はキーが「endou」の要素を削除しています。
[キーを指定して要素を削除する]
キーを指定して要素を削除する辞書型で用意されている「pop」メソッドを実行すると、
指定したキーに該当する要素を削除し値を返します。
辞書オブジェクト.pop(キー[, オブジェクト])
1番目の引数に削除したい要素のキーを指定します。
キーが辞書オブジェクトに含まれていれば要素を削除し、要素の値を返します。
2番目の引数が指定されていた場合、指定したキーが辞書オブジェクトに含まれていない場合に
2番目に指定したオブジェクトを返します。
具体的には次のように記述します。
[キーを指定して要素を削除する]
キーを指定して要素を削除する辞書型で用意されている「pop」メソッドを実行すると、
指定したキーに該当する要素を削除し値を返します。
辞書オブジェクト.pop(キー[, オブジェクト])
1番目の引数に削除したい要素のキーを指定します。
キーが辞書オブジェクトに含まれていれば要素を削除し、要素の値を返します。
2番目の引数が指定されていた場合、指定したキーが辞書オブジェクトに含まれていない場合に
2番目に指定したオブジェクトを返します。
具体的には次のように記述します。
dict = {"real":75, "join":82} val = dict.pop("join")
上記ではキー「join」を持つ要素を削除し、その要素の値を変数「val」に代入します。
[任意の要素を削除する]
辞書型で用意されている「popitem」メソッドを実行すると、
辞書オブジェクトの中のいずれかの要素を削除し、
キーと値を要素とするタプルとして返します。
辞書オブジェクト.popitem()
この時削除される要素はランダムに決まります。
その為、辞書オブジェクトに含まれる要素を順に取り出し処理するような場合に適しています。
取得できるタプルは「(キー, 値)」の形式となります。
具体的には次のように記述します。
[任意の要素を削除する]
辞書型で用意されている「popitem」メソッドを実行すると、
辞書オブジェクトの中のいずれかの要素を削除し、
キーと値を要素とするタプルとして返します。
辞書オブジェクト.popitem()
この時削除される要素はランダムに決まります。
その為、辞書オブジェクトに含まれる要素を順に取り出し処理するような場合に適しています。
取得できるタプルは「(キー, 値)」の形式となります。
具体的には次のように記述します。
dict = {"yamada":75, "endou":82} whille dict: tuple = dict.popitem()
上記では辞書オブジェクトの要素が空になるまで要素を取り出して削除しています。
[全ての要素を削除する]
辞書型で用意されている「clear」メソッドを実行すると、全ての要素を削除します。
辞書オブジェクト.clear()
具体的には次のように記述します。
[全ての要素を削除する]
辞書型で用意されている「clear」メソッドを実行すると、全ての要素を削除します。
辞書オブジェクト.clear()
具体的には次のように記述します。
dict = {"yamada":75, "endou":82} dict.clear()
※この時辞書オブジェクトが削除されるのではなく、空の辞書オブジェクトになります。
キーの条件について
・キーにオブジェクトを指定可能だが、指定できるオブジェクトは変更が出来ない型に限定されます。
・変更できない型としては数値やオブジェクト、タプルが存在します。
(ただしタプルの要素の中に変更可能なオブジェクトが含まれていた場合は使用不可。)
・リストや辞書のようにオブジェクトが変更可能な型はキーとして使用不可になります。。
例)キーに数値や文字列を使用する場合
キーの条件について
・キーにオブジェクトを指定可能だが、指定できるオブジェクトは変更が出来ない型に限定されます。
・変更できない型としては数値やオブジェクト、タプルが存在します。
(ただしタプルの要素の中に変更可能なオブジェクトが含まれていた場合は使用不可。)
・リストや辞書のようにオブジェクトが変更可能な型はキーとして使用不可になります。。
例)キーに数値や文字列を使用する場合
{1:"A", 2:"B"} {"JP":u"日本", "CA":u"カナダ"} {(50, 100):"Apple", (120, 150):"Melon"}
キーにリストや辞書、そしてタプルの要素にリストなどの変更可能なオブジェクトが含まれている場合は「TypeError」となる。
{[1,2]:20} {{1:"A"}:20} {(50, [10,20]):20}
キーの存在確認
in演算子 または、has_keyメソッドを用いて
辞書オブジェクトに指定のキーが含まれているかどうかを確認
キー in 辞書オブジェクト
「in」演算子の左辺に指定したキーが 右辺の辞書オブジェクトの要素の中に存在している場合は「True」を返します。
存在しない場合は「False」を返します。
(似た演算子として「not in」演算子は指定のキーが含まれていない場合に「True」を返します。)
キー not in 辞書オブジェクト
具体的には次のように記述します。
in演算子 または、has_keyメソッドを用いて
辞書オブジェクトに指定のキーが含まれているかどうかを確認
キー in 辞書オブジェクト
「in」演算子の左辺に指定したキーが 右辺の辞書オブジェクトの要素の中に存在している場合は「True」を返します。
存在しない場合は「False」を返します。
(似た演算子として「not in」演算子は指定のキーが含まれていない場合に「True」を返します。)
キー not in 辞書オブジェクト
具体的には次のように記述します。
dict = {"real":75, "endou":82} print "real" in dict print "katou" in dict
has_keyメソッド
「in」演算子と同じ動作をする「has_key」メソッドが辞書型で用意されています。
辞書オブジェクト.has_key(キー)
引数に指定したキーが存在した場合には「True」を返し、存在しなかった場合には「False」を返します。
具体的には次のように記述します。
「in」演算子と同じ動作をする「has_key」メソッドが辞書型で用意されています。
辞書オブジェクト.has_key(キー)
引数に指定したキーが存在した場合には「True」を返し、存在しなかった場合には「False」を返します。
具体的には次のように記述します。
dict = {"real":75, "join":82} print dict.has_key("real") # False print dict.has_key("start") # True
辞書オブジェクトに含まれているキーや値の一覧を取得します
≪キーのリストを取得する≫
辞書型で用意されている「keys」メソッドを使います。
辞書オブジェクト.keys()
辞書オブジェクトに含まれる全てのキーを要素としたリスト型のオブジェクトを返します。
具体的には次のように記述します。
≪キーのリストを取得する≫
辞書型で用意されている「keys」メソッドを使います。
辞書オブジェクト.keys()
辞書オブジェクトに含まれる全てのキーを要素としたリスト型のオブジェクトを返します。
具体的には次のように記述します。
dict = {"real":75, "join":82} list = dict.keys()
≪値のリストを取得する≫
辞書型で用意されている「values」メソッドを使います。
辞書オブジェクト.values()
辞書オブジェクトに含まれる全ての値を要素としたリスト型のオブジェクトを返します。
具体的には次のように記述します。
辞書型で用意されている「values」メソッドを使います。
辞書オブジェクト.values()
辞書オブジェクトに含まれる全ての値を要素としたリスト型のオブジェクトを返します。
具体的には次のように記述します。
dict = {"real":75, "join":82} list = dict.values()
≪タプル型のオブジェクトのリストを取得する≫
(辞書オブジェクトに含まれる
各要素について(キー, 値)のタプル型のオブジェクトを作成し、リストにて取得)
辞書型で用意されている「items」メソッドを使います。
辞書オブジェクト.items()
具体的には次のように記述します。
(辞書オブジェクトに含まれる
各要素について(キー, 値)のタプル型のオブジェクトを作成し、リストにて取得)
辞書型で用意されている「items」メソッドを使います。
辞書オブジェクト.items()
具体的には次のように記述します。
dict = {"yamada":75, "endou":82} list = dict.values()