どのように入れ子になった辞書にPythonから(scipy.weave
を通して)Cへ渡すことができますか?Cで入れ子になったPython辞書を抽出する
私は、PythonコードとCコードのインターフェイスが必要な複雑なコードを開発しています。 dict_1,dict_2,...
のような辞書自身、ある
nested_dict = {'key1': dict_1, 'key2': dict_2, ...}
:Pythonは/ scipy.weave
コードは次のように、ネストされた辞書のインターフェースCに渡す
dict_1 = {'kd1': val1, ...}
私はdict_1
のkd1
にval1
にアクセスしたいと言います。 2行目の
void myfunc(PyObject* nested_dict){
PyObject* dict1 = PyDict_GetItemString(nested_dict,"key1");
double val1 = PyFloat_AS_DOUBLE(PyDict_GetItemString(dict1,"kd1"));
}
残念ながら、この悲惨クラッシュ:scipy.weave
コードは、C関数myfunc(PyObject* nested_dict)
呼び出します。そして、なぜ私は理解できません。
ご協力いただければ幸いです。
乾杯、 マウリツィオ
エラーチェックはどこですか? –
良い点。私はもう少しエラーチェックをしました。私は間違ったデータ構造を渡していました。上記のコードは正しいです。 – maurizio
それにもかかわらず、コードにエラーチェックを追加する必要があります(たとえば、戻り値がNULLの場合はすぐに戻ります)。おかげさまで –