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.