Dictionary Objects

在版本 2.2 中更改:接受允许的子类型。

2.4 版的新Function。

返回一个新的空字典,否则返回* NULL *。

返回强制执行只读行为的 Map 的代理对象。这通常用于创建代理,以防止修改非动态类类型的字典。

2.2 版中的新Function。

2.4 版的新Function。

返回一个新字典,该字典包含与* p *相同的键值对。

1.6 版中的新Function。

从具有键* key 的字典 p 返回对象。如果键 key 不存在,但没有设置异常,则返回 NULL *。

这与PyDict_GetItem()相同,但是* key *被指定为char*而不是PyObject*

返回一个包含字典中所有项目的PyListObject,如字典方法dict.items()一样。

与字典方法dict.keys()一样,返回包含字典中所有键的PyListObject

与字典方法dict.values()一样,返回包含字典* p *中所有值的PyListObject

在版本 2.5 中进行了更改:此函数返回了int类型。这可能需要更改您的代码以正确支持 64 位系统。

For example:

PyObject *key, *value;
Py_ssize_t pos = 0;

while (PyDict_Next(self->dict, &pos, &key, &value)) {
    /* do something interesting with the values... */
    ...
}

字典* p *不应在迭代过程中发生突变。在字典上迭代时修改键的值是安全的(自 Python 2.1 起),但前提是只要键的集合不变即可。例如:

PyObject *key, *value;
Py_ssize_t pos = 0;

while (PyDict_Next(self->dict, &pos, &key, &value)) {
    int i = PyInt_AS_LONG(value) + 1;
    PyObject *o = PyInt_FromLong(i);
    if (o == NULL)
        return -1;
    if (PyDict_SetItem(self->dict, key, o) < 0) {
        Py_DECREF(o);
        return -1;
    }
    Py_DECREF(o);
}

在版本 2.5 中更改:此函数对* ppos *使用了int *类型。这可能需要更改您的代码以正确支持 64 位系统。

2.2 版中的新Function。

2.2 版中的新Function。

def PyDict_MergeFromSeq2(a, seq2, override):
    for key, value in seq2:
        if override or key not in a:
            a[key] = value

2.2 版中的新Function。

首页