jueves, 9 de junio de 2016

Python VIII (diccionarios)

Este es otro post dedicado a programación en Python, encontraréis todos los posts de este tipo juntos en el apartado Programación del blog. Y si queréis aprender más podéis visitar la web oficial de www.python.org

Hoy vamos a ver los diccionarios. Los diccionarios son parecidos a las listas, nos sirven para almacenar datos de forma "estructurada" gracias a una clave o índice. De esta forma conseguimos que una variable pueda almacenar múltiples valores en lugar de un solo valor, la ventaja que tienen sobre las listas es que en los diccionarios podemos acceder de forma rápida a un valor si conocemos su clave.




1. Definir un dicionario


Para crear un diccionario usaremos los claudators { }, tal y como se muestra en el siguiente ejemplo

# definimos un diccionario
capitales={'España':'Madrid', 'Francia':'Paris'}

en este caso hemos creado un diccionario que hemos asignado a la variable capitales, la primera clave es España y su valor Madrid, la segunda clave es Francia y su valor Paris.
Al igual que en las listas las claves y los valores pueden ser de cualquier tipo de datos, como valores lógicos, números, etc. Pero también podemos crear diccionarios que tengan como valores otros diccionarios o listas, tal y como os muestro a continuación


# definimos un diccionario
capitales={'España':'Madrid','Francia':'Paris'}
# definimos otro diccionario que tiene como valor el primer diccionario
geografia={'clave_capitales':capitales}
# mostramos por pantalla el contenido del diccionario geografia
print(geografia)

Es importante que tengáis en cuenta que una vez creado un diccionario los valores y sus claves pueden no conservar el orden en que las creamos, aunque esto no debe ser un problema ya que para acceder a los valores hay que utilizar la clave de los mismos.


2. Acceder a los elementos de un diccionario



para ello usaremos la clave a la que le hemos asignado un valor, como os muestro a continuación

# definimos un diccionario
capitales={'España':'Madrid','Francia':'Paris','Alemania':'Berlin'}
# accedemos a los valores del diccionario y los mostramos por pantalla
print(capitales['España'])
print(capitales['Francia'])
print(capitales['Alemania'])

si usamos una clave que no existe en nuestro diccionario el programa nos devolverá un error del tipo keyError como este

Traceback (most recent call last):
  File "/home/pi/Desktop/test.py", line 4, in <module>
    print(capitales['Grecia'])
KeyError: 'Grecia'

podeis usar este ejemplo para verlo por pantalla

# definimos un diccionario
capitales={'España':'Madrid','Francia':'Paris','Alemania':'Berlin'}
# accedemos a un valor del diccionario inexistente o erróneo
print(capitales['Grecia'])

3. Añadir valores a un diccionario


para añadir una clave con su valor a un diccionario existente tenemos que usar un código como el siguiente

# definimos un diccionario
capitales={'España':'Madrid','Francia':'Paris','Alemania':'Berlin'}
# añadimos un valor al diccionario
capitales['Suiza']='Ginebra'
# mostramos por pantalla el contenido del diccionario
print(capitales)

en el caso de que la clave ya exista se sobrescribe el valor de la misma


4. Eliminar elementos en un diccionario



en este caso usaremos el mismo comando pop() que vimos en las listas, pero además al usarlo en un diccionario, este de forma automática nosdevuelve el valor eliminado, mirad el siguiente ejemplo

# definimos un diccionario
capitales={'España':'Madrid','Francia':'Paris','Alemania':'Berlin'}
# eliminamos un valor usando la clave 
# añadiendo la orden print devuelve por pantalla el valor eliminado
print(capitales.pop('Francia'))
# mostramos por pantalla el contenido del diccionario
print(capitales)


5. Recorrer diccionarios



Como en las listas nos sirve para realizar una operación sobre cada uno de los valores del diccionario, para ello usaremos el comando for que ya hemos visto en el apartado de sintaxis, En los siguientes ejemplos veremos como recorrer las claves, los valores o ambos a la vez, de tres formas distintas

# definimos un diccionario
capitales={'España':'Madrid','Francia':'Paris','Alemania':'Berlin'}
# creamos un bucle que muestra las claves del diccionario
for clave in capitales:
    print(clave)

# definimos un diccionario
capitales={'España':'Madrid','Francia':'Paris','Alemania':'Berlin'}
# creamos un bucle que muestra las claves y valores del diccionario
for valor in capitales.items():
    print(valor)

# definimos un diccionario
capitales={'España':'Madrid','Francia':'Paris','Alemania':'Berlin'}
# creamos un bucle que muestra las claves y los valores del diccionario
for clave,valor in capitales.items():
    print(clave + ':' + valor)


os animo a modificar el código y ver como secomporta, hasta pronto