Creamos entonces un diccionario llamado "compas" donde sus entradas son los usuarios del mattermost de 10 personas diferentes de la clase de ciencia de datos y 2 profesores de la CoNGA physics. A su vez cada usuario es un diccionario que lleva la información de cada una de las personas. Así cuando digitamos compas['usuario'] recibimos un diccionario que contiene la información del estudiante o profesor.
compas = {
'ordonezs' : {
'nombre' : 'Sebastian',
'apellido' : 'Ordoñez',
'edad' : 22,
'país de origen' : 'Colombia',
'ciudad de residencia': 'Bogotá',
'especialidad científica' : 'Física de partículas experimental',
'institución' : 'Universidad Nacional de Colombia',
'hobbies' : 'leer,hiking,entrenamiento de peso'
},
'acerot' : {
'nombre' : 'Tatiana',
'apellido' : 'Acero',
'edad' : 23,
'país de origen' : 'Colombia',
'ciudad de residencia': 'Bogotá',
'especialidad científica' : 'Mecánica celeste relativista',
'institución' : 'Universidad Nacional de Colombia',
'hobbies' : 'Anime'
},
'ladinoj' : {
'nombre' : 'Jose Miguel',
'apellido' : 'Ladino',
'edad' : 24,
'país de origen' : 'Colombia',
'ciudad de residencia': 'Bogotá',
'especialidad científica' : 'Mecánica celeste relativista',
'institución' : 'Universidad Nacional de Colombia',
'hobbies' : 'Skate'
},
'riveraa' : {
'nombre' : 'Ariel',
'apellido' : 'Rivera',
'edad' : 33,
'país de origen' : 'Perú',
'ciudad de residencia': 'Lima',
'especialidad científica' : 'Física Nuclear',
'institución' : 'Universidad Nacional de Ingeniería',
'hobbies' : 'Geopolitica, CS:Go, uC, Programación'
},
'pinzonc' : {
'nombre' : 'Carlos Andres',
'apellido' : 'Pinzon Osorio',
'edad' : 30,
'país de origen' : 'Colombia',
'ciudad de residencia': 'Bogotá',
'especialidad científica' : 'Física Nuclear',
'institución' : 'Universidad Antonio Nariño',
'hobbies' : 'Atletismo'
},
'omarasto' : {
'nombre' : 'Omar',
'apellido' : 'Asto',
'edad' : 25,
'país de origen' : 'Perú',
'ciudad de residencia': 'Lima',
'especialidad científica' : 'Física de altas energías',
'institución' : 'Universidad Nacional de Ingeniería',
'hobbies' : 'leer periódico'
},
'jal' : {
'nombre' : 'Jose Antonio',
'apellido' : 'López',
'edad' : 50,
'país de origen' : 'Venezuela',
'ciudad de residencia': 'Caracas',
'especialidad científica' : 'Física',
'institución' : 'Universidad Central de Venezuela',
'hobbies' : 'Excursionismo, cocinar, leer'
},
'jalil' : {
'nombre' : 'Jalil',
'apellido' : 'Varela',
'edad' : 21,
'país de origen' : 'Colombia',
'ciudad de residencia': 'Cali',
'especialidad científica' : 'Átomos ultra fríos',
'institución' : 'Universidad del Valle',
'hobbies' : 'trotar'
},
'malamboj' : {
'nombre' : 'Jorge Enrique',
'apellido' : 'Malambo',
'edad' : 39,
'país de origen' : 'Colombia',
'ciudad de residencia': 'Bogotá',
'especialidad científica' : 'Modelaje y simulación',
'institución' : 'Universidad Nacional de Colombia',
'hobbies' : 'Tallar madera y ecoturismo'
},
'martinezj' : {
'nombre' : 'Jocabed',
'apellido' : 'Martínez',
'edad' : 22,
'país de origen' : 'Venezuela',
'ciudad de residencia': 'Caracas',
'especialidad científica' : 'Astrofísica',
'institución' : 'Universidad Central de Venezuela',
'hobbies' : 'música'
},
'noecch' : {
'nombre' : 'Robin Noe',
'apellido' : 'Camacho',
'edad' : 22,
'país de origen' : 'Perú',
'ciudad de residencia': 'Trujillo',
'especialidad científica' : 'Espectroscopía Libs',
'institución' : 'Universidad Nacional de Trujillo',
'hobbies' : 'trekking, bike, jugar en pc, ver series'
},
'navasa' : {
'nombre' : 'Alfonso',
'apellido' : 'Navas',
'edad' : 24,
'país de origen' : 'Colombia',
'ciudad de residencia': 'Bogotá',
'especialidad científica' : 'Física de sistemas complejos, ecología',
'institución' : 'Universidad Nacional de Colombia',
'hobbies' : 'crossfit'
}
}
Ejemplo : si queremos buscar la infomación del estudiante Alfonso Navas, cuyo usuario de Mattermost es 'navasa', digitamos compas['navasa'] para acceder al diccionario asociado a este estudiante.
compas['navasa']
{'nombre': 'Alfonso', 'apellido': 'Navas', 'edad': 24, 'país de origen': 'Colombia', 'ciudad de residencia': 'Bogotá', 'especialidad científica': 'Física de sistemas complejos, ecología', 'institución': 'Universidad Nacional de Colombia', 'hobbies': 'crossfit'}
Importamos la librería tabulate para tabular el diccionario de forma organizada
from tabulate import tabulate
Para utilizar la función tabulate, es necesario crear una lista con las etiquedas de la tabla. La llamamos items.
items = ["Nombre", "Apellido", "Edad", "País de origen", "Ciudad de residencia","especialidad","institución","hobbies"]
Acá tenemos un ejemplo de la función tabulate, cuando se la aplicamos al diccionario que se genera al ingresar el usuario de mattermos 'ordonezs'.
print(tabulate(compas['ordonezs'].items(),headers=items))
Nombre Apellido ----------------------- --------------------------------- nombre Sebastian apellido Ordoñez edad 22 país de origen Colombia ciudad de residencia Bogotá especialidad científica Física de partículas experimental institución Universidad Nacional de Colombia hobbies leer,hiking,entrenamiento de peso
Ahora creamos una variable que reciba un país para obtener la información de los estudiantes y profesores que pertenecen a dicho país.
x= input("digite un país: ")
digite un país: Perú
Definimos la función país, la cual recibe un string. Luego busca en todos los diccionarios en la sección ['país de origen'] cuales coinciden con la variable que se ingresó a la función y finalmente imprime la información correspondiente de forma tabulada.
def pais(p):
for llave in compas:
if compas[llave]['país de origen'] == x:
print(tabulate(compas[llave].items(),headers=items))
Ejemplo: Cuando ingresamos como variable 'Perú' y aplicamos la función país sobre esta variable, obtenemos la información de tres estudiantes cuyo país de origen coincide con el que se ingresó a la función. Obtenemos entonces la información correspondiente de cada uno de ellos y ellas.
pais(x)
Nombre Apellido ----------------------- ------------------------------------ nombre Ariel apellido Rivera edad 33 país de origen Perú ciudad de residencia Lima especialidad científica Física Nuclear institución Universidad Nacional de Ingeniería hobbies Geopolitica, CS:Go, uC, Programación Nombre Apellido ----------------------- ---------------------------------- nombre Omar apellido Asto edad 25 país de origen Perú ciudad de residencia Lima especialidad científica Física de altas energías institución Universidad Nacional de Ingeniería hobbies leer periódico Nombre Apellido ----------------------- --------------------------------------- nombre Robin Noe apellido Camacho edad 22 país de origen Perú ciudad de residencia Trujillo especialidad científica Espectroscopía Libs institución Universidad Nacional de Trujillo hobbies trekking, bike, jugar en pc, ver series
Ahora queremos calcular la edad promedio de los estudiantes y profesores del diccionario. Para esto creamos dos variables que inician en cero. Luego aplicamos un ciclo for que recorra las edades de todos los estudiantes y las vaya sumando a la variable a, además luego de hacer esto, la variable n suma 1 para llevar la cuenta de cuantas personas hay en el diccionario. Finalmente imprimimos el cociente entre a y n para obtener la edad promedio.
a=0
n=0
for llave in compas:
a+=compas[llave]['edad']
n+=1
print(a/n)
27.916666666666668
Finalmente, queremos obtener una lista con todas las instituciones sin repetición. Para esto creamos una lista vacía y por medio de un ciclo for le vamos añadiendo la institución correspondiente de cada estudiante o profesor, luego volvemos la lista un set para que elimine los elementos repetidos y la volvemos una lista nuevamente. Al imprimir esta nueva lista obtenemos el resultado deseado.
instituciones=[]
for llave in compas:
instituciones.append(compas[llave]['institución'])
institucionesnr = list(set(instituciones))
print(institucionesnr)
['Universidad Nacional de Ingeniería', 'Universidad Nacional de Colombia', 'Universidad Central de Venezuela', 'Universidad Nacional de Trujillo', 'Universidad Antonio Nariño', 'Universidad del Valle']