Cómo funcionan los diccionarios en Python

En un tutorial anterior, hablamos sobre la versatilidad y flexibilidad de un tipo de objeto de Python, las listas. En este artículo, continúo con mi afán de propagar la palabra de Python con otros objetos la mar de flexibles también, llamados Diccionarios (también llamados arrays asociativos). Como las listas, los diccionarios son un importante concepto a entender si queremos avanzar con nuestro viaje por las carreteras de Python.

¿Qué es un diccionario?

Si has ojeado el artículo sobre las listas de Python, será mucho más fácil para ti entender el concepto de Diccionario. Son más o menos iguales que las listas, pero con dos diferencias principales:

  • Son conjuntos de datos desordenados (al contrario que las listas, que eran ordenadas)
  • Las claves se utilizan para acceder a los elementos y no una posición.

Cada clave del diccionario tiene un valor, que puede ser de cualquier tipo de objeto de Python. Es decir, los diccionarios pueden ser considerados como pares de clave-valor. Sin embargo, ten cuidado de que las claves no sean no tipo lista, ni tipo diccionario.

Vamos a crear un diccionario Inglés-Francés

Como vimos en la sección anterior, un diccionario es simplemente un conjunto desordenado de pares de clave-valor. Vamos a utilizar este concepto para crear nuestro primer ejemplo, un diccionario Inglés-Francés. Este diccionario se puede crear de la siguiente manera:

english_french = {'paper':'papier', 'pen':'stylo', 'car':'voiture', 'table':'table','door':'porte'}

El diccionario english_french contiene cinco palabras inglesas como clave, con sus significados franceses establecidos como valores.

Así que si queremos saber cómo se dice “pen” en francés, simplemente hacemos lo siguiente:

english_french['pen']

Y obtendrás “stylo” como valor devuelto.

Haciendo cosas más interesantes

Supongamos que tenemos un diccionarios Francés-Español (french_spanish) con las mismas palabras que tenemos en el diccionario english_french, tal que así:

french_spanish = {'papier':'papel', 'stylo':'pluma', 'voiture':'coche', 'table':'mesa', 'porte':'puerta'}

Imagina que se te ha pedido traducir “door” al español, ¡y no tienes un diccionario Inglés-Español a mano! No te preocupes, existe una solución. Busca en tu diccionario english_french la palabra, y después, utiliza el resultado para consultar el diccionario french_spanish. ¿Todo claro? Vamos a ver cómo implementar esto último en Python:

french_spanish[english_french['door']]

El resultado de todo esto debe ser “puerta”. ¿A que mola todo esto de los diccionarios de Python? Has obtenido la traducción de “door” en español sin tener un diccionario Inglés-Español.

Más operaciones con diccionarios

En el ejemplo anterior hemos visto cómo podemos crear un diccionario y acceder a dichos elementos del diccionario. Vamos a ver algunas operaciones más que podemos realizar con diccionarios. Voy a usar el diccionario english_french en los siguientes ejemplos.

¿Cuántos elementos tiene el diccionario?

En otras palabras, esta operación tiene la intención de devolver el número de pares de valores-clave del diccionario. Esto puede realizarse mediante el operador len(), tal que así:

len(english_french)

Esto debe devolver el número 5.

Eliminar una clave

La eliminación de un elemento en un diccionario se lleva a cabo a través de las claves. Por ejemplo, digamos que queremos eliminar la palabra “door” (clave) del diccionario. Esto puede realizarse simplemente con el siguiente código:

del english_french['door']

Esto eliminará la clave “door” junto a su valor “porte”.

¿Existe la clave en el diccionario?

En la sub-sección anterior, hemos eliminado la clave “door” del diccionario. Si queremos comprobar si “door” todavía existe en el diccionario o no, escribimos:

'door' in english_french

Debería devolver false

¿Y esta sentencia?, ¿Qué devolverá? Adelante, pruébala y compruébalo tú mismo (atento al not)

'door' not in english_french

¿Qué pasa si intentamos acceder a una clave que no existe en el diccionario? Hacer referencia a english_french[ door']. En ese caso, obtendrás un error similar al siguiente:

Traceback (most recent call last):

  File "dictionary.py", line 7, in 

    print english_french['door']

KeyError: 'door'

Crear una copia del diccionario

Es posible que quieras hacer una copia de tu diccionario english_french para asignarlo a otro diccionario. Esto puede realizarse simplemente mediante la función de copy(), tal que así:

new_english_french = english_french.copy()

Recorriendo un diccionario

Hay muchas maneras de recorrer los elementos de un diccionario, como por ejemplo:

for word in english_french:

    print word

El resultado de esta sentencia será:

car

pen

paper

door

table 

Ten en cuenta que las claves en el resultado no las vemos en el mismo orden que en el diccionario english_french. Ahora puedes ver por qué te dije que los diccionarios se consideran conjuntos desordenados.

Otra forma de recorrer diccionarios a través de las claves es la siguiente:

for word in english_french.iterkeys():

    print word

Fíjate que he usado la función iterkeys(). Una función similar que se puede utilizar para recorrer los distintos valores es itervalues(). Échale un vistazo:

for meaning in english_french.itervalues():

    print meaning

El resultado en este caso debería ser similar al siguiente:

voiture

stylo

papier

porte

table

Fuente: Abder-Rahman Ali

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO