dict
および types.DictType
として公開されています。
PyObject *p) |
PyObject *p) |
) |
PyObject *dict) |
PyObject *p) |
PyObject *p, PyObject *key) |
1
を返し、
それ以外の場合には 0
を返します。エラーの場合 -1
を返します。この関数は Python の式"key in p"と等価です。
バージョン 2.4 で 新たに追加 された仕様です。
PyObject *p) |
PyObject *p, PyObject *key, PyObject *val) |
0
を、失敗した場合には -1
を返します。
PyObject *p, const char *key, PyObject *val) |
PyString_FromString(key)
で生成
されます。
成功した場合には 0
を、失敗した場合には -1
を返します。
PyObject *p, PyObject *key) |
0
を、失敗した場合には -1
を返します。
PyObject *p, char *key) |
0
を、失敗した場合には -1
を返します。
PyObject *p, PyObject *key) |
PyObject *p, const char *key) |
PyObject *p) |
PyObject *p) |
PyObject *p) |
PyObject *p) |
PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue) |
0
に
初期化しておかなければなりません; この関数は辞書内の各ペアを
取り上げるごとに真を返し、全てのペアを取り上げたことが分かると
偽を返します。パラメタ pkey および pvalue には、
それぞれ辞書の各々のキーと値を指すポインタか、または NULL
が入ります。この関数から返される参照はすべて借りた参照になります。
反復処理中に ppos を変更してはなりません。この値は
内部的な辞書構造体のオフセットを表現しており、構造体はスパース
なので、オフセットの値に一貫性がないためです。
以下に例を示します:
PyObject *key, *value; int pos = 0; while (PyDict_Next(self->dict, &pos, &key, &value)) { /* 取り出した値で何らかの処理を行う... */ ... }
反復処理中に辞書 p を変更してはなりません。 (Python 2.1 からは) 辞書を反復処理する際に、キーに対応する値を 変更しても大丈夫になりましたが、キーの集合を変更しないことが 前提です。以下に例を示します:
PyObject *key, *value; int pos = 0; while (PyDict_Next(self->dict, &pos, &key, &value)) { int i = PyInt_AS_LONG(value) + 1; PyObject *o = PyInt_FromLong(i); if (o == NULL) return -1; if (PyDict_SetItem(self->dict, key, o) < 0) { Py_DECREF(o); return -1; } Py_DECREF(o); }
PyObject *a, PyObject *b, int override) |
0
を返し、例外が送出された場合には
-1
を返します。
バージョン 2.2 で 新たに追加 された仕様です。
PyObject *a, PyObject *b) |
PyDict_Merge(a, b, 1)
と同じ、
Python で表せばa.update(b)
と同じです。
成功した場合には 0
を返し、例外が送出された場合には
-1
を返します。
バージョン 2.2 で 新たに追加 された仕様です。
PyObject *a, PyObject *seq2, int override) |
0
を返し、例外が送出された場合には
-1
を返します。
(戻り値以外は) 等価な Python コードを書くと、以下のようになります:
def PyDict_MergeFromSeq2(a, seq2, override): for key, value in seq2: if override or key not in a: a[key] = value
バージョン 2.2 で 新たに追加 された仕様です。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。