gpt4 book ai didi

struct - 如何从cython中的dict初始化结构

转载 作者:行者123 更新时间:2023-12-04 14:51:28 25 4
gpt4 key购买 nike

假设我有一个这样定义的结构:

cdef extern from "blah.h":
struct my_struct:
int a
int b

我需要能够转换 dict进入 my_struct ,无需假设对 my_struct 的字段有任何了解。换句话说,我需要进行以下转换:
def do_something(dict_arg):
cdef my_struct s = dict_arg
do_somthing_with_s(s)

问题是 Cython 不会这样做: http://docs.cython.org/src/userguide/language_basics.html#automatic-type-conversions

当然,如果我知道 my_struct字段的名称,我可以这样做:
def do_something(dict_arg):
cdef my_struct s = my_struct(a=dict_arg['a'], b=dict_arg['b'])
do_somthing_with_s(s)

这样做会使 cython 编译器崩溃:
def do_something(dict_arg):
cdef my_struct s = my_struct(**dict_arg)
do_somthing_with_s(s)

我不知道字段名称的原因是因为代码是自动生成的,我不想做一个丑陋的黑客来处理这种情况。

如何使用 Cython 从 Python dict 初始化结构?

最佳答案

您必须手动设置结构的每个元素。没有捷径可走。
如果您的代码是自动生成的,那么也应该很容易自动生成一个内联函数
执行从 PyDict 到您的每个结构的转换。

关于struct - 如何从cython中的dict初始化结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5673249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com