En Python, un diccionario es una colección
no ordenada
de pares
clave - valor
donde la clave y el valor son objetos Python.
El acceso a los elementos de un diccionario se realiza a través de la clave.
En otros lenguajes se les conoce como tablas hash.
CREAR UN DICCIONARIO
De la misma forma que con listas, es posible definir un diccionario directamente con los miembros que va a contener, o bien inicializar el diccionario vacío y luego agregar los valores.
Los diccionarios se crean utilizando llaves { }.
Los elementos del diccionario son de la forma clave : valor y cada uno de los elementos se separan por comas.
In [3]:
# Definición de un diccionario vacío, los diccionarios se engloban mediante llaves {}
dic = { }
# Nos devuelve que el diccionario 'dic' está vacío
bool(dic)
Out[3]:
In [4]:
# En los diccionarios siempre debe definirse una clave y un valor
# Sintáxis: dic = {clave: 'valor', clave: 'valor', clave: 'valor'}
dic = {1:'Lunes', 2:'Martes', 3:'Miercoles' }
dic
Out[4]:
La clave de un diccionario puede ser cualquier variable de tipo inmutable:
cadenas
enteros
tuplas (con valores inmutables en sus miembros), etc.
Los valores de un diccionario pueden ser de cualquier tipo: listas, cadenas, tuplas, otros diccionarios, objetos, etc.
In [5]:
# El diccionario 'd1' tiene como clave cadenas y como valor enteros o tuplas
d1 = {'Lunes' : 1, 'Martes' : 2 , 'Finde' : (6,7) }
print(d1)
# Aunque los elementos de un diccionario se defninan de manera desordenada, al llamar a dicho diccionario estos
# siempre aparecerán de manera ordenada mediante su clave.
d2 = {7:'Domingo', 1:'Lunes', 3:'Miércoles', 6:'Sábado', 5:'Viernes', 2:'Martes', 4:'Jueves'}
d2
Out[5]:
Otra forma de crear un diccionario es declararlo vacío y luego añadir los valores, se le declara como un par de llaves sin nada en medio, y luego se asignan valores directamente a los índices.
In [6]:
# Se declara un diccionario vacío
dic = {}
# Se añaden elementos a dicho diccionario otorgando un valor a la clave
dic[1] = 'a'
dic[2] = 'b'
dic[3] = 'c'
dic
Out[6]:
ACCESO A LOS ELEMENTOS DE UN DICCIONARIO
Para acceder al valor asociado a una determinada clave, utilizamos la notación de corchetes [ ] usada en listas, pero utilizando la clave elegida en lugar del índice.
In [7]:
dic = {'x': 1, 'y': 2, 'z': 4}
dic['y']
Out[7]:
Las claves son únicas dentro de un diccionario, es decir que no puede haber un diccionario que tenga dos veces la misma clave, si se asigna un valor a una clave ya existente, se reemplaza el valor anterior.
In [8]:
# Definimos un nuevo valor para la clave 'y', que lo que hará es borrar el anterior valor y sustituirlo por el nuevo
dic['y'] = 99
# Añade una nueva clave, no existente, con su valor correspondiente
dic['zz'] = 'Hola'
dic
Out[8]:
In [9]:
# Si se intenta acceder a una clave no existente, Python nos arroja un error
dic['xx']
Para evitar estos errores, podemos usar la función
in
, que comprueba si un elemento está en el diccionario o utilizar el método
get
, que devuelve el valor
None
si la clave no está en el diccionario.
In [25]:
# dic = {'x': 1, 'y': 2, 'z': 4}
# Preguntamos por la clave y nos devuelve un valor booleano
'x' not in dic
Out[25]:
In [11]:
# Mediante GET podemos realizar una consulta sobre una clave para conocer su valor
# dic.get('x')
# Mediante la función TYPE, podemos averiguar si está presente o no el diccionario o de que tipo es el valor
# type(dic.get('x'))
# Si la clave no está en el diccionario nos muestra una variable de tipo NONE
type(dic.get('xx'))
Out[11]:
Para eliminar elementos de un diccionario se utiliza el método
pop
:
In [12]:
dic
Out[12]:
In [16]:
borrar = dic.pop('zz')
borrar
In [17]:
dic
Out[17]:
In [18]:
# NOTA DE AUTOR
# Método para capturar un error de tipo KeyError en Python
try:
dic['xx']
except KeyError: # capturamos la excepción
print("Cuidado, no existe la clave" + " 'xx' " + "en el diccionario")
MÉTODOS: KEYS, VALUES Y UPDATE
El método
keys
devuelve una lista con las claves del diccionario. El método
values
devuelve una lista con los valores del diccionario.
In [19]:
dic
Out[19]:
In [24]:
# Uso del método KEYS para obtener el valor de las claves de un diccionario
dic.keys()
Out[24]:
In [24]:
# Uso del método VALUES para obtener el los valores de un diccionario
dic.values()
Out[24]:
In [25]:
# Para fusionar diccionarios utilizamos el método update.
d1
Out[25]:
In [26]:
d2
Out[26]:
In [27]:
d1.update(d2)
d1
Out[27]:
LA FUNCIÓN ZIP
Existen algunas diferencias entre las versiones 2.7 y 3.5 de Python:
Python 2.7: La función
zip
permite crear una lista de tuplas a partir de los elementos de otras secuencias.
Python 3.5: La función
zip
permite crear un objeto iterable a partir de los elementos de otras secuencias.
In [28]:
# Vamos a ver un ejemplo en Python 3.5
# Definimos una lista llamada 's1'
s1 = [1, 2, 3, 4]
# Definimos una lista llamada 's2'
s2 = ['primavera', 'otoño', 'verano', 'invierno']
# Uso de la función ZIP para unir ambas listas
z = zip(s1, s2)
# Creamos una lista a partir de la variable 'z' que a su vez es un merge de las listas 's1' y 's2'
# Lo que nos mostrará será un solapamiento de ambas listas, alternando entre valores de la primera y la segunda,
# como si de una cremallera se tratase
s_zip = list(z) # Guardamos la lista en una variable para poder usarla
s_zip # Mostramos la lista contenida en la variable s_zip
Out[28]:
In [29]:
# Preguntamos por el primero de los valores de la lista
s_zip[0]
Out[29]:
También podemos hacer
zip
inverso para separar una lista de tuplas en varias secuencias.
In [30]:
# Con los datos del ejemplo anterior
s1 = [1, 2, 3 , 4]
s2 = ['primavera', 'verano', 'otoño', 'invierno' ]
z = zip(s1, s2)
s_zip = list(z)
s_zip
Out[30]:
In [31]:
# Definimos dos variables 'c1' y 'c2' para desentrelazar la lista contenida dentro de la variable 's_zip'
# que a su vez contiene una lista de tuplas
c1, c2 = zip(*s_zip)
# Mostramos el resultado
c1, c2
Out[31]:
In [32]:
# A partir de secuencias también es posible crear diccionarios
# Definimos la variable 'map' como un diccionario usando la función dict()
map = dict(zip(s1,c2))
map
Out[32]:
In [ ]: