如何编写基于C的模块来处理python字典?

如何编写基于C的模块来处理python字典?,python,c,hashtable,Python,C,Hashtable,我最近需要为一个群组聊天机器人编写一个模块,它可以响应每一条消息,并查找是否有与关键字匹配的内容。机器人本身基于Python并提供Python API。由于业务需要,我可能想用C语言编写此过程,如下所示: 导入my_c_模块 DICTIONARY={}#嵌套字典,包含关键字、回复、模式、组上下文等 异步def响应\u到\u mesg(): .... 调用c函数 .... c函数需要处理消息和字典,并查看匹配项 让我困惑的主要部分是,我不知道如何让C使用这本词典。这里需要使用什么样的数据结构?首

我最近需要为一个群组聊天机器人编写一个模块,它可以响应每一条消息,并查找是否有与关键字匹配的内容。机器人本身基于Python并提供Python API。由于业务需要,我可能想用C语言编写此过程,如下所示:

导入my_c_模块
DICTIONARY={}#嵌套字典,包含关键字、回复、模式、组上下文等
异步def响应\u到\u mesg():
....
调用c函数
....
c函数需要处理消息和字典,并查看匹配项


让我困惑的主要部分是,我不知道如何让C使用这本词典。这里需要使用什么样的数据结构?

首先需要为c文件生成一个共享库。假设文件名为library.c,其中包含函数myfunction

int myFunction(int num) 
{ 
    if (num == 0) 

        // if number is 0, do not perform any operation. 
        return 0; 
    else
        // if number is power of 2, return 1 else return 0 

    num & (num - 1) == 0 ? return 1 : return 0 
}
您可以使用以下命令编译上面的c文件library.c

cc -fPIC -shared -o dicmodule.so library.c
上述语句将生成名为dicmodule.so的共享库。现在,让我们看看如何在python中使用它。在python中,我们有一个名为ctypes的库。使用这个库,我们可以在python中使用C函数

import ctypes 
NUM = 16      
# dicmodule loaded to the python file 
# using fun.myFunction(), 
# C function can be accessed 
# but type of argument is the problem. 

fun = ctype.CDLL(dicmodule.so)   
# Now whenever argument  
# will be passed to the function                                                         
# ctypes will check it. 

fun.myFunction.argtypes(ctypes.c_int) 

# now we can call this  
# function using instant (fun) 
# returnValue is the value  
# return by function written in C  
# code 
returnVale = fun.myFunction(NUM)

希望这是清楚的。您需要根据自己的需要对此进行修改。

请在线查找以下资源:(取决于您的版本)