微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用PyO3在Rust中创建异构Python字典?

如何解决如何使用PyO3在Rust中创建异构Python字典?

基于this,我可以创建同构的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);
,

只为完成-Alex Larionov's idea有用!

工作代码段为:

let key_vals: Vec<(&str,PyObject)> = vec![
    ("num",8.to_object(py)),"asd".to_object(py))
];
let dict = key_vals.into_py_dict(py);

整个主要here

此额外的导入是必需的:

use pyo3::types::IntoPyDict;

也请注意,如果您碰巧需要将Python None值放入字典中,.to_object(py)失败了,请使用:

py.None()

相反。

变量pypyo3::Python对象。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。