# Protocolo de mapeo

Consulte también `PyObject_GetItem()`, `PyObject_SetItem()` y `PyObject_DelItem()`.

int `PyMapping_Check`(PyObject *o)

  Return `1` if the object provides the mapping protocol or supports slicing, and `0` otherwise. Note that it returns `1` for Python classes with a `__getitem__()` method, since in general it is impossible to determine what type of keys the class supports. This function always succeeds.

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

  Retorna el número de claves en el objeto o en caso de éxito, y `-1` en caso de error. Esto es equivalente a la expresión de Python `len(o)`.

PyObject* `PyMapping_GetItemString`(PyObject *o, const char *key)
  Return value: New reference.

  Retorna el elemento de o correspondiente a la cadena de caracteres key o `NULL` en caso de error. Este es el equivalente de la expresión de Python `o[key]`. Ver también `PyObject_GetItem()`.

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

  Asigna la cadena de caracteres key al valor v en el objeto o. Retorna `-1` en caso de falla. Este es el equivalente de la declaración de Python `o[key] = v`. Ver también `PyObject_SetItem()`. Esta función no roba una referencia a v.

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

  Elimina la asignación para el objeto key del objeto o. Retorna `-1` en caso de falla. Esto es equivalente a la declaración de Python `del o[key]`. Este es un alias de `PyObject_DelItem()`.

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

  Elimina la asignación de la cadena de caracteres key del objeto o. Retorna `-1` en caso de falla. Esto es equivalente a la declaración de Python `del o[key]`.

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

  Retorna `1` si el objeto de mapeo tiene la clave key y `0` de lo contrario. Esto es equivalente a la expresión de Python `key in o`. Esta función siempre finaliza con éxito.

  Tenga en cuenta que las excepciones que se producen al llamar al método `__getitem__()` se suprimirán. Para obtener informes de errores, utilice `PyObject_GetItem()` en su lugar.

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

  Retorna `1` si el objeto de mapeo tiene la clave key y `0` de lo contrario. Esto es equivalente a la expresión de Python `key in o`. Esta función siempre finaliza con éxito.

  Tenga en cuenta que las excepciones que se producen al llamar al método `__getitem__()` y al crear un objeto de cadena de caracteres temporal se suprimirán. Para obtener informes de errores, utilice `PyMapping_GetItemString()` en su lugar.

PyObject* `PyMapping_Keys`(PyObject *o)
  Return value: New reference.

  En caso de éxito, retorna una lista de las claves en el objeto o. En caso de fallo, retorna `NULL`.

  Distinto en la versión 3.7: Anteriormente, la función retornaba una lista o una tupla.

PyObject* `PyMapping_Values`(PyObject *o)
  Return value: New reference.

  En caso de éxito, retorna una lista de los valores en el objeto o. En caso de fallo, retorna `NULL`.

  Distinto en la versión 3.7: Anteriormente, la función retornaba una lista o una tupla.

PyObject* `PyMapping_Items`(PyObject *o)
  Return value: New reference.

  En caso de éxito, retorna una lista de los elementos en el objeto o, donde cada elemento es una tupla que contiene un par clave-valor (key-value). En caso de fallo, retorna `NULL`.

  Distinto en la versión 3.7: Anteriormente, la función retornaba una lista o una tupla.