映射协议 — Python 文档

来自菜鸟教程
Python/docs/3.8/c-api/mapping
跳转至:导航、​搜索

映射协议

另见 PyObject_GetItem()PyObject_SetItem()PyObject_DelItem()

int PyMapping_Check(PyObject *o)
如果对象提供映射协议或支持切片,则返回 1,否则返回 0。 请注意,它使用 __getitem__() 方法为 Python 类返回 1,因为在一般情况下无法确定它支持什么类型的键。 此功能总是成功。
Py_ssize_t PyMapping_Size(PyObject *o)


Py_ssize_t PyMapping_Length(PyObject *o)

成功时返回对象 o 中的键数,失败时返回 -1。 这相当于 Python 表达式 len(o)
PyObject *PyMapping_GetItemString(PyObject *o, const char *key)
失败时返回对应于字符串 keyNULLo 的元素。 这相当于 Python 表达式 o[key]。 另见 PyObject_GetItem()
int PyMapping_SetItemString(PyObject *o, const char *key, PyObject *v)
将字符串 key 映射到对象 o 中的值 v。 失败时返回 -1。 这相当于 Python 语句 o[key] = v。 另见 PyObject_SetItem()。 此函数 不会 窃取对 v 的引用。
int PyMapping_DelItem(PyObject *o, PyObject *key)
从对象 o 中删除对象 key 的映射。 失败时返回 -1。 这相当于 Python 语句 del o[key]。 这是 PyObject_DelItem() 的别名。
int PyMapping_DelItemString(PyObject *o, const char *key)
从对象 o 中删除字符串 key 的映射。 失败时返回 -1。 这相当于 Python 语句 del o[key]
int PyMapping_HasKey(PyObject *o, PyObject *key)

如果映射对象具有 key 键,则返回 1,否则返回 0。 这相当于 Python 表达式 key in o。 此功能总是成功。

请注意,调用 __getitem__() 方法时发生的异常将被抑制。 要获得错误报告,请改用 PyObject_GetItem()

int PyMapping_HasKeyString(PyObject *o, const char *key)

如果映射对象具有 key 键,则返回 1,否则返回 0。 这相当于 Python 表达式 key in o。 此功能总是成功。

请注意,调用 __getitem__() 方法和创建临时字符串对象时发生的异常将被抑制。 要获得错误报告,请改用 PyMapping_GetItemString()

PyObject *PyMapping_Keys(PyObject *o)

成功时,返回对象 o 中的键列表。 失败时,返回 NULL

3.7 版更改: 以前,该函数返回列表或元组。

PyObject *PyMapping_Values(PyObject *o)

成功时,返回对象 o 中的值列表。 失败时,返回 NULL

3.7 版更改: 以前,该函数返回列表或元组。

PyObject *PyMapping_Items(PyObject *o)

成功时,返回对象 o 中的项目列表,其中每个项目是一个包含键值对的元组。 失败时,返回 NULL

3.7 版更改: 以前,该函数返回列表或元组。