Diccionarios
¿Qué son los diccionarios en Python?
Los diccionarios son objetos que permiten almacenar colecciones de valores de diferentes tipos, enteros, decimales, cadenas, incluso objetos iterables como listas tuplas y otros diccionarios. Los elementos de un diccionario están asociados en pares a una llave o clave única e irrepetible. Esto hace que el orden en que se almacenen los datos es totalmente irrelevante. A diferencia de las listas y tuplas, los diccionarios se encierran entre llaves '{}', escribiendo primero la clave seguido de dos puntos (:) y luego el valor de esa clave. El formato para crear diccionarios sería entonces:
<nombre del diccionario> = {'<clave elemento 1>':'<valor elemento 1>',
'<clave elemento 2>':'<valor elemento 2>'
...
'<clave elemento n>':'<valor elemento n>'}
Veamos el siguiente ejemplo:
Alumnos = {
'nombre':'Cesar',
'apellido':'Gamboa',
'documento':1234567,
'curso':'Python'
}
print(Alumnos)
print(type(Alumnos))
Resultado:
{'nombre': 'Cesar', 'apellido': 'Gamboa', 'documento': 1234567, 'curso': 'Python'}
<class 'dict'>
Como podemos ver se ha creado una colección de datos en pares asociados a una clave dentro de una estructura tipo diccionario que la contiene. Es importante destacar que se ha hecho uso de la función TYPE() para confirmar que el objeto creado haya sido del tipo diccionario.
Las claves pueden ser números enteros y los datos pueden ser listas también. Veamos el siguiente ejemplo:
Datos= {1:'Numero 1',2:'Numero 2',3:['A','B','C']}
print(Datos)
Resultado:
{1: 'Numero 1', 2: 'Numero 2', 3: ['A', 'B', 'C']}
Como podemos comprobar los diccionarios pueden contener claves y datos de diferentes tipos.
Para accede a un elemento de un diccionario basta con hacer referencia a su clave entre corchetes []. Ejemplo:
dCapitales = {
'Argentina':'Buenos Aires',
'Uruguay':'Montevideo',
'Paraguay':'Asunción',
'Brasil':'Brasiia',
'Bolivia':'La Paz',
'Ecuador':'Quito',
'Perú':'Lima',
'Colombia':'Bogotá',
'Venezuela':'Caracas'
}
print(dCapitales["Uruguay"])
Resultado:
Montevideo
Como podemos comprobar a través de la clave "Uruguay" se ha accedido al valor asociado a ésta.
Modificación de datos
Para modificar el contenido de un elemento de un diccionario, basta con hacer referencia a su clave entre corchetes [] y asignarle el nuevo valor. Hay que tomar en cuenta que ya que las claves son únicas su valor se va a sobreescribir, ya que en los diccionarios no pueden coexistir dos claves iguales. Ejemplo:
Datos= {1:'Numero 1',2:'Numero 2',3:['A','B','C']}
print(Datos)
Datos[3] = 'Numero 3'
print(Datos)
Resultado:
{1: 'Numero 1', 2: 'Numero 2', 3: ['A', 'B', 'C']}
{1: 'Numero 1', 2: 'Numero 2', 3: 'Numero 3'}
Como podemos comprobar se ha accedido al elemento de clave 3 que originalmente era una lista y se le ha asignado un valor de cadena de caracteres. En el ejemplo se imprimió el diccionario antes y después de la modificación para comprobar el cambio.
Adición de datos
Si de la misma manera se hubiera declarado en la instrucción una clave que no existiera previamente en el diccionario Python hubiera creado un nuevo elemento con esa clave. Veamos el siguiente ejemplo:
Datos= {1:'Numero 1',2:'Numero 2',3:'Numero 3'}
print(Datos)
Datos[4] = 'Numero 4'
print(Datos)
Resultado:
{1: 'Numero 1', 2: 'Numero 2', 3: 'Numero 3'}
{1: 'Numero 1', 2: 'Numero 2', 3: 'Numero 3', 4: 'Numero 4'}
De igual manera que en las anteriores ocasiones se ha mostrado por pantalla el contenido del diccionario Datos, en esta oportunidad para comprobar que se ha agregado satisfactoriamente el elemento de índice 4 con el contenido como datos la cadena de caracteres 'Numero 4'
Eliminación de datos
Para eliminar un elemento del diccionario basta con utilizar la instrucción DEL y hacer referencia al dato del diccionario a través de su clave. Veamos el siguiente ejemplo:
Datos= {1:'Numero 1',2:'Numero 2',3:'Numero 3',4:'Numero 4'}
print(Datos)
del Datos[4]
print(Datos)
Resultado:
{1: 'Numero 1', 2: 'Numero 2', 3: 'Numero 3', 4: 'Numero 4'}
{1: 'Numero 1', 2: 'Numero 2', 3: 'Numero 3'}
Se ha eliminado satisfactoriamente el elemento de índice 4 como podemos ver al comparar el contenido del diccionario Datos antes y después del uso de la instrucción DEL.
Mostrar los items del diccionario
Es posible mostrar por pantalla el contenido de un diccionario en forma de lista y separando los diferentes items en forma de tuplas. Veamos el siguiente ejemplo:
Datos= {1:'Numero 1',2:'Numero 2',3:'Numero 3',4:'Numero 4'}
print(Datos.items())
Resultado:
dict_items([(1, 'Numero 1'), (2, 'Numero 2'), (3, 'Numero 3'), (4, 'Numero 4')])
Como podemos comprobar el resultado de la impresión por pantalla del diccionario Datos a través de su método .ITEMS() arroja una lista con los elementos del diccionario emparentados índice y contenido en Tuplas.
Mostrar solo los valores del diccionario
Para mostrar por pantalla solamente los valores de un diccionario se puede invocar el método -VALUES(), veamos el siguiente ejemplo:
Datos= {1:'Numero 1',2:'Numero 2',3:'Numero 3',4:'Numero 4'}
print(Datos.values())
Resultado:
dict_values(['Numero 1', 'Numero 2', 'Numero 3', 'Numero 4'])
Como podemos comprobar Python devuelve una lista solamente con el contenido de los valores del diccionario.
Mostrar solo las claves del diccionario
Ya vimos como mostrar solo los valores del diccionario a través del método .VALUES(), ahora para mostrar solamente las claves se invocará al método .KEYS(). Veamos el siguiente ejemplo:
Datos= {1:'Numero 1',2:'Numero 2',3:'Numero 3',4:'Numero 4'}
print(Datos.keys())
Resultado:
dict_keys([1, 2, 3, 4])
Como podemos comprobar Python devuelve en este caso una lista que contiene solamente las claves del diccionario.
En resumen, los diccionarios son un tipo de datos iterables como las listas o las tuplas, salvo que a diferencia de los anteriores, es el programador quien define los índices. Es por ello que hay que tener la precaución de no repetir las claves.
Puede consultar la lista completa de los métodos de los diccionarios aquí.
Usar una tupla para asignar las claves a cada valor en un diccionario
Para asignar las claves a un diccionario usando una tupla, primero se declara la tupla con las claves y luego se declara el diccionario como se mostró en ejemplos anteriores y en cada declaración de clave se escribe la referencia al elemento de la tupla (a través de su índice), declarando el valor de dicha clave normalmente como se ha venido haciendo hasta ahora. Veamos un ejemplo:
tPaises=['Venezuela','Colombia','Perú','Bolivia',\
'Paraguay','Uruguay','Brasil','Ecuador','Argentina']
print(f'Tupla creada: {tPaises}')
dCapitales={tPaises[0]:'Caracas',tPaises[1]:'Bogotá',\
tPaises[2]:'Lima',tPaises[3]:'La Paz',tPaises[4]:'Asunción',\
tPaises[5]:'Montevideo',tPaises[6]:'Brasilia',tPaises[7]:'Quito',\
tPaises[8]:'Buenos Aires'}
print(f'\nDiccionario creado: {dCapitales}')
Resultado:
Tupla creada: ['Venezuela', 'Colombia', 'Perú', 'Bolivia', 'Paraguay', 'Uruguay', 'Brasil', 'Ecuador', 'Argentina']
Diccionario creado: {'Venezuela': 'Caracas', 'Colombia': 'Bogotá', 'Perú': 'Lima', 'Bolivia': 'La Paz', 'Paraguay': 'Asunción', 'Uruguay': 'Montevideo', 'Brasil': 'Brasilia', 'Ecuador': 'Quito', 'Argentina': 'Buenos Aires'}
Como podemos comprobar se ha usado una tupla para crear las claves de un diccionario, haciendo referencia al contenido de la tupla a través de su índice.
También es válido acceder a un elemento de un diccionario creado con el método anterior haciendo referencia tanto al elemento de la tupla que contiene el índice como escribiendo el índice directamente. Veamos el siguiente ejemplo:
tPaises=['Venezuela','Colombia','Perú','Bolivia',\
'Paraguay','Uruguay','Brasil','Ecuador','Argentina']
dCapitales={tPaises[0]:'Caracas',tPaises[1]:'Bogotá',\
tPaises[2]:'Lima',tPaises[3]:'La Paz',tPaises[4]:'Asunción',\
tPaises[5]:'Montevideo',tPaises[6]:'Brasilia',tPaises[7]:'Quito',\
tPaises[8]:'Buenos Aires'}
print(f'La capital de {tPaises[5]} es {dCapitales[tPaises[5]]}\n')
print(f'La capital de Venezuela es {dCapitales["Venezuela"]}')
Resultado:
La capital de Uruguay es Montevideo
La capital de Venezuela es Caracas
Por el resultado se puede comprobar que ambos métodos arrojan resultados correctos por el intérprete de Python.
Almacenar una tupla dentro de un diccionario
Es posible, como se dijo anteriormente que un diccionario contenga una tupla dentro de sus elementos. Esto se logra definiendo el nombre de la tupla como clave del elemento y luego de los dos puntos (:) la tupla entre corchetes como elemento. Veamos el siguiente ejemplo:
dAlumnos = {
'Nombre':'César','Apellido':'Gamboa','Fecha de nacimiento':'13/09/73',\
'Materias':['Matemáticas','Biología','Física']
}
print(dAlumnos)
Resultado:
{'Nombre': 'César', 'Apellido': 'Gamboa', 'Fecha de nacimiento': '13/09/73', 'Materias': ['Matemáticas', 'Biología', 'Física']}
Como podemos comprobar se ha creado un diccionario en donde uno de sus elementos contiene como valor una tupla. En el ejemplo anterior es una tupla con los valores de las materias que el alumno cursa. Para acceder a los valores del diccionario, por ejemplo a la fecha de nacimiento del alumno, bastaría con usar su clave. Ejemplo:
dAlumnos = {
'Nombre':'César','Apellido':'Gamboa','Fecha de nacimiento':'13/09/73',\
'Materias':['Matemáticas','Biología','Física']
}
print(dAlumnos['Fecha de nacimiento'])
Resultado:
13/09/73
Podemos comprobar por el resultado que a través de su clave hemos tenido acceso al valor de dicha clave. Si por ejemplo deseamos acceder a los valores de la tupla materias basta con hacer referencia a su clave que es "Materias", veamos su ejecución:
dAlumnos = {
'Nombre':'César','Apellido':'Gamboa','Fecha de nacimiento':'13/09/73',\
'Materias':['Matemáticas','Biología','Física']
}
print(dAlumnos['Materias'])
Resultado:
['Matemáticas', 'Biología', 'Física']
Podemos comprobar por el resultado que Python ha devuelto la tupla de valores emparentada con la clave 'Materias'.
Es posible convertir la tupla relacionada con la clave 'Materias' en un diccionario, y quedaría un diccionario como valor del elemento de la clave 'Materias'. Para ello cambiamos los corchetes que definen la tupla a llaves para que sea un diccionario y le creamos una clave a las materias, por ejemplo 'Ciencias', ahora las materias deben almacenarse en una tupla usando los corchetes como se ve a continuación:
dAlumnos = {
'Nombre':'César','Apellido':'Gamboa','Fecha de nacimiento':'13/09/73',\
'Materias':{'Ciencias':['Matemáticas','Biología','Física']}
}
print(dAlumnos['Materias'])
Resultado:
{'Ciencias': ['Matemáticas', 'Biología', 'Física']}
Podemos comprobar que ahora la clave 'Materias' devuelve un diccionario que contiene la clave Ciencias relacionada a una tupla con los elementos 'Matemáticas', 'Biología' y 'Física'.
El resultado de mostrar el diccionario entero sería tal y como sigue:
dAlumnos = {
'Nombre':'César','Apellido':'Gamboa','Fecha de nacimiento':'13/09/73',\
'Materias':{'Ciencias':['Matemáticas','Biología','Física']}
}
print(dAlumnos)
Resultado:
{'Nombre': 'César', 'Apellido': 'Gamboa', 'Fecha de nacimiento': '13/09/73', 'Materias': {'Ciencias': ['Matemáticas', 'Biología', 'Física']}}
Si bien este es un ejemplo poco práctico y complicado de organizar datos, sirve para ilustrar la complejidad que se puede alcanzar en Python para crear estructuras de datos iterables.
Comentarios
Publicar un comentario