types.DictType
and
types.DictionaryType
.
PyString_FromString(key)
.
0
prior to the first call to this function to start the iteration; the
function returns true for each pair in the dictionary, and false once
all pairs have been reported. The parameters pkey and
pvalue should either point to PyObject* variables that
will be filled in with each key and value, respectively, or may be
NULL.
For example:
PyObject *key, *value; int pos = 0; while (PyDict_Next(self->dict, &pos, &key, &value)) { /* do something interesting with the values... */ ... }
The dictionary p should not be mutated during iteration. It is safe (since Python 2.1) to modify the values of the keys as you iterate over the dictionary, for example:
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); }
See About this document... for information on suggesting changes.