【发布时间】:2016-09-15 15:43:56
【问题描述】:
如何访问从 Python(通过scipy.weave)传递到 C 的嵌套字典?
我正在开发一些复杂的代码,需要将 Python 代码与 C 代码连接。 python/scipy.weave代码向C接口传递一个嵌套字典,如:
nested_dict = {'key1': dict_1, 'key2': dict_2, ...}
dict_1,dict_2,... 本身就是字典,例如:
dict_1 = {'kd1': val1, ...}
假设我想在kd1 的dict_1 中访问val1。 scipy.weave 代码调用 C 函数 myfunc(PyObject* nested_dict) 其中:
void myfunc(PyObject* nested_dict){
PyObject* dict1 = PyDict_GetItemString(nested_dict,"key1");
double val1 = PyFloat_AS_DOUBLE(PyDict_GetItemString(dict1,"kd1"));
}
不幸的是,这在第二行不幸崩溃了。我不明白为什么。
任何帮助将不胜感激。
干杯, 毛里齐奥
【问题讨论】:
-
你的错误检查在哪里?
-
好点。我做了更多的错误检查。我传递了错误的数据结构。上面的代码是正确的。
-
尽管如此,您应该在代码中添加一些错误检查(例如,如果任何返回值为
NULL,则立即返回)。 -
谢谢。我确实会这样做。
标签: python-2.7 dictionary nested python-c-api