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