嵌套 dict 和 pybind11

Posted

技术标签:

【中文标题】嵌套 dict 和 pybind11【英文标题】:Nested dict and pybind11 【发布时间】:2018-11-23 22:01:45 【问题描述】:

我有一个使用 pybind11Python 捆绑的 C++ 扩展。扩展返回一个嵌套的 Python dict 对象:

#include <pybind11/pybind11.h>
namespace py = pybind11;

py::dict cpp_ext(void)  
    // Variables
    py::dict res;

    // Result
    res["circle"]["x0"] = 0;
    res["circle"]["y0"] = 0;
    res["circle"]["r"] = 1;
    return res;
;

它编译,但给了我错误:

KeyError: ('circle',)

我应该如何构造一个嵌套的 py::dict 对象?

【问题讨论】:

py::dict circle; py::dict res; circle['x0'] = 0; ...; res['circle'] = circle;怎么样? 工作,@a_guest!把它写成答案,我会接受的。 【参考方案1】:

您可以为嵌套实例创建一个单独的dict,然后将其分配给外部实例:

py::dict cpp_ext(void)  
    // Variables
    py::dict res;
    py::dict circle;

    // Result
    circle["x0"] = 0;
    circle["y0"] = 0;
    circle["r"] = 1;
    res["circle"] = circle;
    return res;
;

【讨论】:

以上是关于嵌套 dict 和 pybind11的主要内容,如果未能解决你的问题,请参考以下文章

熊猫的嵌套列表列表

Pandas MultiIndex(超过 2 个级别)DataFrame 到嵌套 Dict/JSON

Flatten嵌套字典-将列表元素转换为字符串

从嵌套的dict中选择一个随机值,并在另一个嵌套的dict中更新它

如何在 tcl 中使用 dict 附加嵌套 dict

无法让 pyparsing Dict() 返回嵌套字典