gpt4 book ai didi

python - 如何使用 Python C API 使用自定义键对列表进行排序?

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

Python C API 提供了以下排序列表的方法:

int PyList_Sort(PyObject *list)

Sort the items of list in place. Return 0 on success, -1 on failure. This is equivalent to list.sort().



但是,没有参数可用于提供自定义排序键(就像 Python 中的 list.sort() 一样)。使用自定义键在 C 中对 Python 列表进行排序的最佳方法是什么?

最佳答案

这做到了:

static PyObject *sortWithKey(PyObject *list, PyObject *key) {
PyObject *argTuple = PyTuple_New(0);
PyObject *keywords = PyDict_New();
PyObject *keyString = PyUnicode_FromString("key");
PyDict_SetItem(keywords, keyString, key);

PyObject *sortMethod = PyObject_GetAttrString(list, "sort");

PyObject *retVal = PyObject_Call(sortMethod, argTuple, keywords);

Py_DECREF(keyString);
Py_DECREF(keywords);
Py_DECREF(argTuple);

return retVal;
}

请注意,我对编写 Python 模块非常陌生,因此这里的内存管理/异常处理可能不是一个好的模型。

关于python - 如何使用 Python C API 使用自定义键对列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51959095/

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