1

我目前正在用 C 编写一个 Python 模块。在其中,我有一个字典,我像这样迭代:

PyObject *key, *value;
Py_ssize_t pos = 0;

while (PyDict_Next(index, &pos, &key, &value))
    /* do interesting things here */

稍后以相同的方法,然后我想再次循环遍历字典。但是,PyDict_Next(...)继续返回NULL。有没有办法重置使用的内部迭代计数器PyDict_Next(...)

4

1 回答 1

2

通过将 pos 设置为 0 来初始化迭代器。您可以通过再次将 pos 设置为 0 来重新启动迭代器。

PyObject *key, *value;
Py_ssize_t pos = 0;

while (PyDict_Next(index, &pos, &key, &value))
    /* do interesting things here */

pos = 0;

while (PyDict_Next(index, &pos, &key, &value))
    /* do even more interesting things here */
于 2013-03-05T17:06:37.590 回答