基于此,我可以创建一个同质的 Python 字典。
如何创建具有混合类型值的字典,例如使其工作:
let dict = [ ("num", 8), ("str", "asd") ].into_py_dict(py);
?
我不是 的用户pyo3
,但从 Rust 的角度来看,问题在于您尝试创建一个异构数组,无论如何这都是被禁止的。要解决它,您可以尝试通过利用PyObject
板条箱的类型将其转换为同构数组。我无法测试下一个片段是否有效,我不确定你是否可以让它更简单,但这个想法是成立的:
let key_vals: &[(&str, PyObject)] = [ ("num", 8.to_object()), ("str", "asd".to_object()) ]
let dict = key_vals.into_py_dict(py);
只是为了完成——亚历克斯·拉里奥诺夫的想法奏效了!
工作代码片段是:
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);
整个主要在这里。
需要这个额外的导入:
use pyo3::types::IntoPyDict;
另外,请注意,如果您碰巧需要将 PythonNone
值放入字典中,如果.to_object(py)
失败,请使用:
py.None()
反而。
变量py
是pyo3::Python
对象。