Las listas son Estructuras de Datos extremadamente flexibles. Sabemos que podemos acceder directamente
a cualquier elemento. Como son secuencias, basta con referenciar a un elemento en una posición
determinada y podremos dar un salto hasta él. Ahora, si precisamos un dato específico, y no sabemos dónde
se encuentra, primero debemos averiguar su posición y luego acceder a él. En muchas ocasiones, cuando
sabemos con precisión cuál es el objeto buscado se puede usar la ayuda de algún método de búsqueda sobre
lista para obtener su dirección. El método, de manera muy eficiente, hará de todos modos lo que nosotros
haríamos por nuestra cuenta; es decir, inspeccionar una por una las posiciones de la lista hasta detectar el
objeto buscado. Esto es irremisiblemente así porque en una lista, el lugar donde se guarda un objeto no tiene
nada que ver con el valor del mismo. El nombre ‘ana’ puede ir en cualquier lugar de la lista.
Y es fácil imaginar que serán muchas las situaciones donde la información de acceso que tengamos será por
contenido y no por posición. Para facilitar este tipo de trabajos (o deberíamos decir, para acelerar más este
tipo de procesos), Python provee una clase de Estructura de Datos que es ideal a tales efectos: Los
diccionarios.
Un diccionario (tipo dict) es una Estructura que permite mapear un valor (clave) con un grupo de datos. De
este modo, si precisamos acceder a un valor en particular, no necesitamos indicar su posición (de hecho, no
la sabremos), sólo indicando su valor saltamos directamente a él. Es decir, empleamos el dato como clave
de acceso.
Un diccionario ubica sus elementos en memoria de acuerdo al resultado que obtiene al aplicar una
función de cálculo a su clave. De ahí su denominación de Estructura Hashable o con acceso hash;
haciendo referencia al nombre que se le da a los algoritmos de cálculo de direcciones para acceso directo
a la información (Algoritmos Hash).
Esa característica vuelve muy eficiente la localización de un determinado dato; porque no se resolverá
inspeccionando una a una las posiciones de la Estructura, se obtendrá de manera directa (o casi) su posición
por medio del cálculo de la función sobre el dato de búsqueda. Cuando decimos “casi” estamos haciendo
referencia a que muy probablemente exista más de una clave que devuelva la misma posición como
resultado de la función. En ese caso lo que se hace es almacenar los datos en “contenedores” unificados por
el valor hash. Y eventualmente habrá una búsqueda secuencial, pero estrictamente dentro del contenedor;
cosa que disminuye drásticamente, de todas formas, el tiempo de búsqueda.
La realidad es que una búsqueda secuencial (como las que hacemos en una lista) se vuelve más y más
ineficiente a medida que el tamaño de la misma aumenta; mientras que el tiempo requerido para realizar la
misma localización en un diccionario tiende a permanecer constante, sin importar su tamaño.
Un diccionario Python se escribe como una colección de pares (separados por ‘:’) entre corchetes