マップ型 (mapping) オブジェクトは変更不可能な値を任意の
オブジェクトに
対応付けます。対応付け自体は変更可能なオブジェクトです。
現在のところは標準のマップ型、dictionary だけです。
辞書のキーにはほとんど任意の値をつかうことができます。使うことが
できないのはリスト、辞書、その他の変更可能な型 (オブジェクトの一致
ではなく、その値で比較されるような型) です。
キーに使われた数値型は通常の数値比較規則に従います: 二つの数字を
比較した時等価であれば (例えば 1
と 1.0
のように)、
これらの値はお互いに同じ辞書のエントリを示すために使うことが
できます。
辞書は key: value
からなるペアを
カンマで区切ったリストを波括弧の中に入れて作ります。
例えば:
{'jack': 4098, 'sjoerd': 4127}
または
{4098: 'jack', 4127: 'sjoerd'}
です。
以下の操作がマップ型で定義されています (ここで、a および b はマップ型で、k はキー、 v および x は任意の オブジェクトです):
操作 | 結果 | 注釈 |
---|---|---|
len(a) |
a 内の要素の数です | |
a[k] |
キー k を持つa の要素です | (1) |
a[k] = v |
a[k] を v に設定します |
|
del a[k] |
a から a[k] を削除します |
(1) |
a.clear() |
a から全ての要素を削除します |
|
a.copy() |
a の(浅い)コピーです |
|
a.has_key(k) |
a にキー k があれば True 、
そうでなければ False です |
|
k |
a.has_key(k) と同じです | (2) |
k not in a |
not a.has_key(k) と同じです |
(2) |
a.items() |
a における (key, value) ペアのリストのコピーです | (3) |
a.keys() |
a におけるキーのリストのコピーです | (3) |
a.update([b]) |
b によって key/value ペアを更新(上書き) | (9) |
a.fromkeys(seq[, value]) |
seq からキーを作り、値が value であるような、新しい辞書を作成します | (7) |
a.values() |
a における値のリストのコピーです | (3) |
a.get(k[, x]) |
もし k in a ならa[k] 、
そうでなければ xを返します |
(4) |
a.setdefault(k[, x]) |
もし k in a ならa[k] 、
そうでなければ x (が与えられていた場合)を返します |
(5) |
a.pop(k[, x]) |
もし k in a なら a[k] 、
そうでなければ x を返して kを除去します |
(8) |
a.popitem() |
任意の (key, value) ペアを除去して返します | (6) |
a.iteritems() |
(key, value) ペアにわたるイテレータを返します | (2), (3) |
a.iterkeys() |
マップのキー列にわたるイテレータを返します | (2), (3) |
a.itervalues() |
マップの値列にわたるイテレータを返します | (2), (3) |
注釈:
(value, key)
のペアを zip() を
使って: "pairs = zip(a.values(), a.keys())"
のように生成することができます。iterkeys() および
itervalues() メソッドの間でも同じ関係が成り立ちます:
"pairs = zip(a.itervalues(), a.iterkeys())"
は pairs
と同じ値になります。
同じリストを生成するもう一つの方法は
"pairs = [(v, k) for (k, v) in a.iteritems()]"です。
None
が返されます。
None
です。
バージョン 2.3 で 新たに追加 された仕様です。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。