Descripción de la actividad:
Entre en contacto con 10 estudiantes del curso de datos y 2 profesores o personal de soporte de LaConga, uno del curso de datos y otro de afuera, y consulte su nombre completo, su nombre de usuario en mattermost, edad, pais de origen, ciudad donde residen, su especialidad científica, nombre del instituto en que estudian/laboran, y un hobbie o afición.
Cree un diccionario llamado “compas”, donde la llave sea el nombre de usuario en mattermost, y si depliego el valor almacenado, por ejemplo en compas[“juan-pineda”], lo que obtengo es a la vez otro diccionario, con las llaves “nombre”, “apellido”, “país”, “residencia”, “edad”, “institución”, “hobbie”.
Cree una función que reciba como entrada el diccionario y un país de origen, y retorne las informaciones completas de todas las personas de ese país, tabuladas en una forma fácil de entender.
Busque una forma de calcular, a partir del diccionario, el promedio de edad de todas las personas en él.
Finalmente busque una forma de mostrar todas las instituciones (sin repetición).
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
@author: jennifer
Este programa entrega los números de una fila del
triángulo de Pascal.
"""
'\n@author: jennifer\n\nEste programa entrega los números de una fila del\ntriángulo de Pascal.\n'
Crearemos un diccionario dentro de un diccionario con los usuarios de mattermost como las llaves principales y con la siguiente estructura:
d = {'dict1': {'foo': 1, 'bar': 2}, 'dict2': {'baz': 3, 'quux': 4}}
compas = {"perezy": {"Nombre":"Yineth","Apellido":"Perez","Edad":29,"País": "Colombia",
"Ciudad": "Bogotá","Institución": "Universidad Nacional de Colombia",
"Hobbie": "Voleibol y ficción", "Tipo": "Estudiante"},
"acerot": {"Nombre":"Tatiana","Apellido":"Acero","Edad":23,"País": "Colombia",
"Ciudad": "Bogotá","Institución": "Universidad Nacional de Colombia",
"Hobbie": "Ver anime y disfrutar la naturaleza", "Tipo": "Estudiante"},
"omarasto":{"Nombre":"Omar","Apellido":"Asto","Edad":25,"País": "Perú",
"Ciudad": "Lima","Institución": "Universidad Nacional de Ingeniería",
"Hobbie": "Leer periódico", "Tipo": "Estudiante"},
"carrilloj": {"Nombre":"Juan","Apellido":"Carrillo","Edad":25,"País": "Colombia",
"Ciudad": "Bogotá","Institución": "Universidad Nacional de Colombia",
"Hobbie": "Videojuegos", "Tipo": "Estudiante"},
"ladinoj": {"Nombre":"JoseM","Apellido":"Ladino","Edad":24,"País": "Colombia",
"Ciudad": "Bogotá","Institución": "Universidad Nacional de Colombia",
"Hobbie": "Skate, ciclismo, guitarra", "Tipo": "Estudiante"},
"martinezj": {"Nombre":"Jocabed","Apellido":"Martinez","Edad":22,"País": "Venezuela",
"Ciudad": "Caracas","Institución": "Universidad Central de Venezuela",
"Hobbie": "Música", "Tipo": "Estudiante"},
"gomezc":{"Nombre":"Carla","Apellido":"Gomez","Edad":27,"País": "Venezuela",
"Ciudad": "Caracas","Institución": "Universidad Simón Bolivar",
"Hobbie": "Bici, electrónica y la gastronomía", "Tipo": "Estudiante"},
"navasa":{"Nombre":"Alfonso","Apellido":"Navas","Edad":24,"País": "Colombia",
"Ciudad": "Bogotá","Institución": "Universidad Nacional de Colombia",
"Hobbie": "Crossfit", "Tipo": "Estudiante"},
"vargass":{"Nombre":"Sasiri","Apellido":"Vargas","Edad":20,"País": "Colombia",
"Ciudad": "Cali","Institución": "Universidad del Valle",
"Hobbie": "Danza y canto", "Tipo": "Estudiante"},
"sirias": {"Nombre":"Siria","Apellido":"Sadeddin","Edad":30,"País": "Venezuela",
"Ciudad": "Colombia","Institución": "Universidad Simón Bolivar",
"Hobbie": "Data Science", "Tipo": "Estudiante"},
"teofilo": {"Nombre":"Teofilo","Apellido":"Vargas","Edad":54,"País": "Perú",
"Ciudad": "Lima","Institución": "Universidad Nacional Mayor de San Marcos",
"Hobbie": "Wing Chun Kuen", "Tipo": "Profesor"}
}
Con esta estructura, para llamar un elemento de la lista que corresponda con la información específica d eun usuario, basta con usar dos corchetes, uno para la llave principal y otro para la llave secundaria. Como se puede observar en la siguiente línea:
compas["teofilo"]["País"]
'Perú'
import statistics as st
#-----Importo una biblioteca que me permite hacer operaciones estadísticas
edades = [] #------ Una lista vacía donde almacenaré únicamente las edades
for item in compas:
value = compas[item]["Edad"]
edades.append(value)
print(edades)
[29, 23, 25, 25, 24, 22, 27, 24, 20, 30, 54]
st.mean(edades)
27.545454545454547
univer = [] #------En esta lista se almacenarán los nombres de las instituciones
for item in compas:
value = compas[item]["Institución"] #--- Se extraen los valores
univer.append(value) #--- Se almacenan en la lista
print(univer) #-----Se muestran en pantalla
['Universidad Nacional de Colombia', 'Universidad Nacional de Colombia', 'Universidad Nacional de Ingeniería', 'Universidad Nacional de Colombia', 'Universidad Nacional de Colombia', 'Universidad Central de Venezuela', 'Universidad Simón Bolivar', 'Universidad Nacional de Colombia', 'Universidad del Valle', 'Universidad Simón Bolivar', 'Universidad Nacional Mayor de San Marcos']
#Eliminar elementos repetidos de la lista de Institutos
InstitutoT = []
for i in univer:
if i not in InstitutoT: #---Almacena datos sin repetir
InstitutoT.append(i)
print(InstitutoT)
['Universidad Nacional de Colombia', 'Universidad Nacional de Ingeniería', 'Universidad Central de Venezuela', 'Universidad Simón Bolivar', 'Universidad del Valle', 'Universidad Nacional Mayor de San Marcos']
from tabulate import _table_formats, tabulate
#-------Con esta biblioteca, puedo tabular con formatos fáciles de leer.
country = "Perú"
#En este for, como se viene realizando en todo el notebook,
#se extraen los valores específicos de la biblioteca (en este caso el username),
#esta vez restringiendo sólo a los que coinciden con el país.
keys = []
values = []
for item in compas:
if compas[item]["País"]== country:
keys.append(item)
print(keys)
['omarasto', 'teofilo']
#---Defino las listas con las que guardaré y ordenaré la información...
Nombre = []
Apellido = []
Edad = []
Instituto = []
Hobbie = []
elements = ["Nombre", "Apellido", "Edad", "Institución", "Hobbie"]
for word in keys: element = compas[word]["Nombre"] Nombre.append(element) print(Nombre)
user = [] #--- Esla lista almacena las listas ordenadas de
#--------------los datos de los usuarios.
details = []#--Lista de datos de usuarios.
#
for word2 in keys:
for word in elements:
element = compas[word2][word]
details.append(element)
user.append(details)
details = []
print(user)
[['Omar', 'Asto', 25, 'Universidad Nacional de Ingeniería', 'Leer periódico'], ['Teofilo', 'Vargas', 54, 'Universidad Nacional Mayor de San Marcos', 'Wing Chun Kuen']]
print(tabulate(user, headers=["Nombre", "Apellido", "Edad", "Institución", "Hobbie"]))
Nombre Apellido Edad Institución Hobbie -------- ---------- ------ ---------------------------------------- -------------- Omar Asto 25 Universidad Nacional de Ingeniería Leer periódico Teofilo Vargas 54 Universidad Nacional Mayor de San Marcos Wing Chun Kuen
def congueros(dic,country):
from tabulate import _table_formats, tabulate
#
keys = []
values = []
for item in dic:
if dic[item]["País"]== country:
keys.append(item)
#
Nombre = []
Apellido = []
Edad = []
Instituto = []
Hobbie = []
#
for word in keys:
element = dic[word]["Nombre"]
Nombre.append(element)
#
elements = ["Nombre", "Apellido", "Edad", "Institución", "Hobbie"]
#
user = []
details = []
for word2 in keys:
for word in elements:
element = dic[word2][word]
details.append(element)
user.append(details)
details = []
#
print(tabulate(user, headers=["Nombre", "Apellido", "Edad", "Institución", "Hobbie"]))
congueros(compas,"Perú")
Nombre Apellido Edad Institución Hobbie -------- ---------- ------ ---------------------------------------- -------------- Omar Asto 25 Universidad Nacional de Ingeniería Leer periódico Teofilo Vargas 54 Universidad Nacional Mayor de San Marcos Wing Chun Kuen