基于this,我可以创建一个同构的Python字典。
如何创建具有混合类型值的字典,例如:
let dict = [ ("num", 8), ("str", "asd") ].into_py_dict(py);发布于 2020-11-05 20:44:05
我不是pyo3的用户,但从拉斯特的角度来看,问题是您试图创建一个异构数组,这无论如何都是被禁止的。要解决这个问题,您可以尝试使用PyObject类型的机箱将其转换为同构数组。我不能测试下一个代码片段是否可以工作,我不确定你是否可以让它变得更简单,但这个想法是成立的:
let key_vals: &[(&str, PyObject)] = [ ("num", 8.to_object()), ("str", "asd".to_object()) ]
let dict = key_vals.into_py_dict(py);发布于 2020-11-05 22:36:52
只是为了完成-- Alex Larionov's idea起作用了!
工作代码片段是:
let key_vals: Vec<(&str, PyObject)> = vec![
("num", 8.to_object(py)), ("str", "asd".to_object(py))
];
let dict = key_vals.into_py_dict(py);整个主here。
还需要这个额外的导入:
use pyo3::types::IntoPyDict;另外,需要注意的是,如果碰巧需要将PythonPython值放入字典中,.to_object(py)将失败,请使用:
py.None()而不是。
变量py是pyo3::Python对象。
https://stackoverflow.com/questions/64694411
复制相似问题