首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用PyO3在Rust中创建异构Python字典?

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

Stack Overflow用户
提问于 2020-11-05 17:27:49
回答 2查看 336关注 0票数 4

基于this,我可以创建一个同构的Python字典。

如何创建具有混合类型值的字典,例如:

代码语言:javascript
运行
复制
let dict = [ ("num", 8), ("str", "asd") ].into_py_dict(py);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-05 20:44:05

我不是pyo3的用户,但从拉斯特的角度来看,问题是您试图创建一个异构数组,这无论如何都是被禁止的。要解决这个问题,您可以尝试使用PyObject类型的机箱将其转换为同构数组。我不能测试下一个代码片段是否可以工作,我不确定你是否可以让它变得更简单,但这个想法是成立的:

代码语言:javascript
运行
复制
let key_vals: &[(&str, PyObject)] = [ ("num", 8.to_object()), ("str", "asd".to_object()) ]
let dict = key_vals.into_py_dict(py);
票数 5
EN

Stack Overflow用户

发布于 2020-11-05 22:36:52

只是为了完成-- Alex Larionov's idea起作用了!

工作代码片段是:

代码语言:javascript
运行
复制
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

还需要这个额外的导入:

代码语言:javascript
运行
复制
use pyo3::types::IntoPyDict;

另外,需要注意的是,如果碰巧需要将PythonPython值放入字典中,.to_object(py)将失败,请使用:

代码语言:javascript
运行
复制
py.None()

而不是。

变量pypyo3::Python对象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64694411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档