> **Источник:** https://python-all.ru/3.4/c-api/mapping.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# Протокол отображения

#### `int PyMapping_Check(PyObject *o)`

Возвращает `1`, если объект поддерживает протокол отображения, и `0` в противном случае. Эта функция всегда завершается успешно.

#### `Py_ssize_t PyMapping_Size(PyObject *o)`

#### `Py_ssize_t PyMapping_Length(PyObject *o)`

При успехе возвращает количество ключей в объекте *o*, а при ошибке – `-1`. Для объектов, не реализующих протокол отображения, это эквивалентно выражению Python `len(o)`.

#### `int PyMapping_DelItemString(PyObject *o, const char *key)`

Удаляет отображение для объекта *key* из объекта *o*. Возвращает `-1` при ошибке. Это эквивалентно инструкции Python `del o[key]`.

#### `int PyMapping_DelItem(PyObject *o, PyObject *key)`

Удаляет отображение для объекта *key* из объекта *o*. Возвращает `-1` при ошибке. Это эквивалентно инструкции Python `del o[key]`.

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

При успехе возвращает `1`, если объект отображения содержит ключ *key*, и `0` в противном случае. Это эквивалентно выражению Python `key in o`. Эта функция всегда завершается успешно.

#### `int PyMapping_HasKey(PyObject *o, PyObject *key)`

Возвращает `1`, если объект отображения содержит ключ *key*, и `0` в противном случае. Это эквивалентно выражению Python `key in o`. Эта функция всегда завершается успешно.

#### `PyObject* PyMapping_Keys(PyObject *o)`

*Возвращаемое значение: новая ссылка.*

При успехе возвращает список ключей в объекте *o*. При ошибке возвращает *NULL*. Это эквивалентно выражению Python `list(o.keys())`.

#### `PyObject* PyMapping_Values(PyObject *o)`

*Возвращаемое значение: новая ссылка.*

При успехе возвращает список значений в объекте *o*. При ошибке возвращает *NULL*. Это эквивалентно выражению Python `list(o.values())`.

#### `PyObject* PyMapping_Items(PyObject *o)`

*Возвращаемое значение: новая ссылка.*

При успехе возвращает список элементов в объекте *o*, где каждый элемент – кортеж, содержащий пару «ключ-значение». При ошибке возвращает *NULL*. Это эквивалентно выражению Python `list(o.items())`.

#### `PyObject* PyMapping_GetItemString(PyObject *o, const char *key)`

*Возвращаемое значение: новая ссылка.*

Возвращает элемент *o*, соответствующий объекту *key*, или *NULL* при ошибке. Это эквивалентно выражению Python `o[key]`.

#### `int PyMapping_SetItemString(PyObject *o, const char *key, PyObject *v)`

Сопоставляет объект *key* со значением *v* в объекте *o*. Возвращает `-1` при ошибке. Это эквивалентно инструкции Python `o[key] = v`.
