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 に答える