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

---

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

**int `PyMapping_Check`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**

Возвращает

`1`

, если объект поддерживает протокол отображения, и

`0`

в противном случае. Эта функция всегда завершается успешно.

**Py\_ssize\_t `PyMapping_Size`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**

**Py\_ssize\_t `PyMapping_Length`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**

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

**int `PyMapping_DelItemString`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, char *\*key*)**

Удаляет отображение для объекта

*key*

из объекта

*o*

. Возвращает

`-1`

при ошибке. Это эквивалентно инструкции Python

`del o[key]`

.

**int `PyMapping_DelItem`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*key*)**

Удаляет отображение для объекта

*key*

из объекта

*o*

. Возвращает

`-1`

при ошибке. Это эквивалентно инструкции Python

`del o[key]`

.

**int `PyMapping_HasKeyString`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, char *\*key*)**

При успехе возвращает

`1`

, если объект отображения содержит ключ

*key*

, и

`0`

в противном случае. Это эквивалентно выражению Python

`key in o`

. Эта функция всегда завершается успешно.

**int `PyMapping_HasKey`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*key*)**

Возвращает

`1`

, если объект отображения содержит ключ

*key*

, и

`0`

в противном случае. Это эквивалентно выражению Python

`key in o`

. Эта функция всегда завершается успешно.

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyMapping_Keys`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**

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

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

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyMapping_Values`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**

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

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

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyMapping_Items`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**

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

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

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyMapping_GetItemString`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, char *\*key*)**

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

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

**int `PyMapping_SetItemString`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, char *\*key*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*v*)**

Сопоставляет объект

*key*

со значением

*v*

в объекте

*o*

. Возвращает

`-1`

при ошибке. Это эквивалентно инструкции Python

`o[key] = v`

.
