Diccionario en Python
Los diccionarios (dict en Python y maps en otros lenguajes) son una de las clases y estructuras de datos más comunes y útiles que hay.
Los diccionarios sirven para asociar dos objetos entre sí, la clave y el valor. Un diccionario podría considerarse una colección de dichas parejas clave-valor que se puede buscar precisamente por la clave.
Tu propio diccionario
Además de usar la clase dict que viene con Python, tal vez no sepas que puedes crear tu propio diccionario.
Supongamos que tienes una clase que representa una API REST remota y tienes métodos para acceder a endpoints y que te devuelva un JSON.
Además, te gustaría poder usarla como si fuese un dict, donde la URL del endpoint es la clave y el JSON resultante es el valor. ¡Puedes hacerlo!
DictMixin
Para ello, solo tienes que heredar de la clase DictMixin del módulo collections e implementar algunos métodos. Una vez lo tengas hecho, podrás utilizar dicha clase como si fuese un diccionario de Python.
Los métodos que tienes que implementar son los siguientes:
__getitem__
__delitem__
__setitem__
keys
Gestión de errores
Los siguientes métodos deben de lanzar la excepción KeyError si no existe una clave para ese valor: getitem, setitem y delitem.
Por otro lado, los siguientes métodos deben de lanzar la excepción TypeError si la clave proporcionada no es del tipo adecuado: getitem, setitem y delitem.
Ejemplo de Diccionario
from collections import MutableMapping as DictMixin
class RestAPI(DictMixin):
# La clase RestAPI sólo tiene que implementar
# getitem, setitem, delitem y keys(como mínimo)
# y python proporcionará los demás métodos basados en esos
# getitem and delitem deben lanzar KeyError si no hay ningín valor para
# esa clave.
# getitem, setitem y delitem deben lanzar TypeError si la
# clave es del tipo equivocado
def __getitem__(self, key):
pass
def __setitem__(self, key, item):
pass
def __delitem__(self, key):
pass
def keys(self):
pass