Obten la información de los paquetes
Clase 16 de 56 • 21 Días de Python
Contenido del curso
Clase 16 de 56 • 21 Días de Python
Contenido del curso
Johan Diaz
Jordan Anderson Huayhua Morales
Eduardo Peña Ramos
Alejandro Anaya
Gabriel Andrés Montiel Hermosa
José Miguel Reyes
Andres Caro
Gustavo Larco
Gilberto Espinoza Maciel
Harold Zurita Simon
Erick Infante
Maga Hernandez
Braulio Rangel
Juan Diego
Fernando Lavao Orjuela
Emmanuel Paiva
Omar Cuarenta
Oscar Daniel Farfan Juanias
Diego Cruz
Melissa Andrea Prieto García
Francisco Pin
Manuel Gomez
Francisco Pin
Rommel Pumisacho
Eduardo Monzón
def get_packages_info(packages): # Tu código aquí 👈 weight = [package[1] for package in packages] tuple_destinations = tuple(package[2] for package in packages) destinations = {destino: tuple_destinations.count(destino) for destino in tuple_destinations} total_weight = round(sum(weight),2) return {"total_weight": total_weight, "destinations": destinations }
creo que tu código es el mejor que he visto
Simple y elegante, perfecto.
🛡️🛡️Escudo anti-spoilers🛡️🛡️
Mi solución al reto:
def get_packages_info(packages): results = { "total_weight": 0.0, "destinations":{} } total_weight = 0.0 for pack in packages: id, weight, dest = pack if dest in results['destinations']: results['destinations'][dest] += 1 else: results['destinations'][dest] = 1 results['total_weight'] += weight results['total_weight'] = round(results['total_weight'],2) return results
def get_packages_info(packages): #"Crea un diccionario para almacenar la información de los paquetes" packages_info = { "total_weight": 0, # "Inicializa el peso total en 0" "destinations": {} # "Inicializa el diccionario de destinos vacío } # "Itera sobre cada paquete en la lista de paquetes" for package in packages: if package[2] in packages_info["destinations"]: # "Si el destino ya está en el diccionario de destinos, incrementa su contador en 1" packages_info["destinations"][package[2]] += 1 else: # "Si el destino no está en el diccionario de destinos, crea una nueva entrada y establece su contador en 1" packages_info["destinations"][package[2]] = 1 # "Suma el peso del paquete al peso total" packages_info["total_weight"] += package[1] # "Redondea el peso total a 2 decimales" packages_info["total_weight"] = round(packages_info["total_weight"], 2) # "Devuelve el diccionario con la información de los paquetes" return packages_info get_packages_info([ (1, 20, "Mexico"), (2, 15.5, "Colombia"), (3, 30, "Mexico"), (4, 12, "Argentina"), (5, 8.2, "Colombia"), (6, 25, "Mexico"), (7, 18.7, "Argentina"), (8, 5, "Colombia"), (9, 22.3, "Argentina"), (10, 14.8, "Colombia") ])
Mi solución:
def get_packages_info(packages): package_info = {} total_weight = 0 for package in packages: total_weight += package[1] total_weight = round(total_weight, 2) destinations = {} for package in packages: destination = package[2] if destination not in destinations: destinations[destination] = 1 else: destinations[destination] += 1 package_info["total_weight"] = total_weight package_info["destinations"] = destinations return package_info
(1, 20, "Mexico"),
(2, 15.5, "Colombia"),
(3, 30, "Mexico"),
(4, 12, "Argentina"),
(5, 8.2, "Colombia"),
(6, 25, "Mexico"),
(7, 18.7, "Argentina"),
(8, 5, "Colombia"),
(9, 22.3, "Argentina"),
(10, 14.8, "Colombia")
]
def get_packages_info(packages):
total_weight = 0
country_items = {}
for package in packages:
total_weight += package[1]
country = package[2]
if country in country_items:
country_items[country] += 1
else:
country_items[country] = 1
return {
"total_weight": round(total_weight, 2),
"destinations": country_items,
}
print(get_packages_info(packages))
creo que no hubo mejor manera de hacerlo te agradezco mucho tu respuesta
Escudo Anti spolers . . . . . . . . . . . . . . . . . . . . . . . . .
def get_packages_info(packages): # Tu código aquí 👈 total = 0 destinos = {} for pack in packages: total += pack[1] if pack[2] in destinos: destinos[pack[2]] += 1 else: destinos[pack[2]] = 1 return { "total_weight": round(total, 2), "destinations": destinos }
Solución 😄… .
def get_packages_info(packages): countries = [country for _, _, country in packages] destinations = {} destinations = { country: countries.count(country) for country in countries if country not in destinations } total_weight = round(sum( package[1] for package in packages ), 2) return { "total_weight": total_weight, "destinations": destinations }
def get_packages_info(packages:list): output = {"total_weight": 0, "destinations": {}} for i in packages: output["total_weight"] += i[1] if i[2] in output["destinations"]: output["destinations"][i[2]] += 1 else: output["destinations"][i[2]] = 1 output["total_weight"] = round(output["total_weight"],2) return output
arreglar TypeError: 'NoneType' object is not subscriptable
suele ocurrir cuando un método o función devuelve None en lugar del valor deseado o También puede ocurrir al intentar acceder a un valor None. C.g.p.t
def get_packages_info(packages): nuevo_diccionario = {"total_weight":0, "destinations":{} } for item in packages: nuevo_diccionario["total_weight"] += item[1] nuevo_diccionario["total_weight"] = round(nuevo_diccionario["total_weight"], 2) destinations = item[2] if destinations in nuevo_diccionario["destinations"]: nuevo_diccionario["destinations"][destinations] += 1 # If the destination is new, add it to the dictionary with a count of 1 else: nuevo_diccionario["destinations"][destinations] = 1 return nuevo_diccionario
Learning Python
def get_packages_info(packages): # declaramos la funcion a ejecutar total_weight = 0 # Inicializamos la variable que almacenará el peso total de todos los paquetes destinations = {} # Creamos un diccionario vacío para contar cuántos paquetes van a cada destino for package in packages: # Recorremos cada tupla dentro de la lista 'packages' id, weight, destination = package # Desempaquetamos la tupla en sus tres componentes total_weight += weight # Sumamos el peso del paquete actual al total acumulado if destination in destinations: # Si el destino ya está en el diccionario, aumentamos a 1 destinations[destination] += 1 else: destinations[destination] = 1 # Si el destino no está en el diccionario, aumentamos a 1 total_weight = round(total_weight, 2) # Redondeamos el peso total a 2 decimales return { # cuando se ejecuta la funcion nos devolvera "resultado" total de pesos y el diccionario con los destionos "total_weight": total_weight, "destinations": destinations }
Mi solución
def get_packages_info(packages): # Tu código aquí 👈 analitycs = {"total_weight": 0, "destinations": {}} for package in packages: analitycs['total_weight'] += package[1] if package[2] in analitycs['destinations']: analitycs['destinations'][package[2]] += 1 else: analitycs['destinations'][package[2]] = 1 analitycs['total_weight'] = round(analitycs['total_weight'], 2) return analitycs
jajaja no entendi que te iban a dar paises al azar y no solo iban a ser los 3 que vienen en la guia, este codigo solo sirve para esos 3 paises
packages = [ (1, 20, "Mexico"), (2, 15.5, "Colombia"), (3, 30, "Mexico"), (4, 12, "Argentina"), (5, 8.2, "Colombia"), (6, 25, "Mexico"), (7, 18.7, "Argentina"), (8, 5, "Colombia"), (9, 22.3, "Argentina"), (10, 14.8, "Colombia")] counter_mx = 0counter_col = 0counter_arg = 0 total_weight = 0 for i in packages: total_weight = total_weight + i[1] if i[2] == "Mexico": counter_mx = counter_mx + 1 else: if i[2] == "Colombia": counter_col = counter_col + 1 else: counter_arg = counter_arg + 1 diccionario = { "total_weight": total_weight, "destinations": { "Mexico":counter_mx, "Colombia": counter_col, "Argentina": counter_arg } } print(diccionario)
Mi solución:
def get_packages_info(packages): my_dict = {} paises = {} peso_total = 0 total_packages = len(packages) for package in packages: peso = package[1] peso_total += peso for package in packages: pais = package[2] if package[2] == pais: paises[pais] = paises.get(pais,0)+1 peso_total = round(peso_total,2) my_dict["total_weight"] = peso_total my_dict["destinations"] = paises print(my_dict) get_packages_info([ (1, 20, "Mexico"), (2, 15.5, "Colombia"), (3, 30, "Mexico"), (4, 12, "Argentina"), (5, 8.2, "Colombia"), (6, 25, "Mexico"), (7, 18.7, "Argentina"), (8, 5, "Colombia"), (9, 22.3, "Argentina"), (10, 14.8, "Colombia") ]) ```def get\_packages\_info(packages): my\_dict = {} paises = {} peso\_total = 0 total\_packages = len(packages) for package in packages: peso = package\[1] peso\_total += peso for package in packages: pais = package\[2] if package\[2] == pais: paises\[pais] = paises.get(pais,0)+1 peso\_total = round(peso\_total,2) my\_dict\["total\_weight"] = peso\_total my\_dict\["destinations"] = paises print(my\_dict) get\_packages\_info(\[ (1, 20, "Mexico"), (2, 15.5, "Colombia"), (3, 30, "Mexico"), (4, 12, "Argentina"), (5, 8.2, "Colombia"), (6, 25, "Mexico"), (7, 18.7, "Argentina"), (8, 5, "Colombia"), (9, 22.3, "Argentina"), (10, 14.8, "Colombia")])
Hola a todos, comparto mi solucion.
def get_packages_info(packages): destinos = {} resultado = { "total_weight": 0, "destinations": destinos } for i in packages: resultado["total_weight"] = round(resultado["total_weight"] + i[1], 2) #lista con todos los lugares de destino list_lugares = [p[2] for p in packages] #nueva lista que elimina lugares repetidos lugares = list(set(list_lugares)) for i in lugares: destinos[i] = list_lugares.count(i) return resultado ```def get\_packages\_info(packages): destinos = {} resultado = { "total\_weight": 0, "destinations": destinos } for i in packages: resultado\["total\_weight"] = round(resultado\["total\_weight"] + i\[1], 2) #lista con todos los lugares de destino list\_lugares = \[p\[2] for p in packages] #nueva lista que elimina lugares repetidos lugares = list(set(list\_lugares)) for i in lugares: destinos\[i] = list\_lugares.count(i) return resultado
def get_packages_info(packages): # Tu código aquí total_weight = 0 destinations = {} for id, weight, destination in packages: total_weight += weight if destination not in destinations: destinations[destination] = 1 else: destinations[destination] += 1 total_weight = round(total_weight, 2) return total_weight, destinations # Pruebatotal, por_pais = get_packages_info([ (1, 20, "Mexico"), (2, 15.5, "Colombia"), (3, 30, "Mexico"), (4, 12, "Argentina"), (5, 8.2, "Colombia"), (6, 25, "Mexico"), (7, 18.7, "Argentina"), (8, 5, "Colombia"), (9, 22.3, "Argentina"), (10, 14.8, "Colombia")]) print(f"El peso total es: {total}")print(f"La cantidad de paquetes por país es: {por_pais}")
Mi solución:def get_packages_info(packages): # Tu código aquí 👈 total_w = round(sum([(p[1]) for p in packages]), 2) unique_dest = list(set([(u[2]) for u in packages])) dic_destinos = {d: (([(p[2]) for p in packages]).count(d)) for d in unique_dest} return {'total_weight': total_w, 'destinations': dic_destinos} pass
def get_packages_info(packages): # Tu código aquí 👈 total_w = round(sum([(p[1]) for p in packages]), 2) unique_dest = list(set([(u[2]) for u in packages])) dic_destinos = {d: (([(p[2]) for p in packages]).count(d)) for d in unique_dest} return {'total_weight': total_w, 'destinations': dic_destinos} pass
Como de costumbre funciona en pycharm pero no en playground
aqui mi solucion:
def get_packages_info(pakages): destination = list(set(pack[2] for pack in packages)) total_weight = round(sum([pack[1] for pack in packages]),3) total_destination = [{destination[i]: sum(pack.count(destination[i]) for pack in packages)} for i in range(len(destination))] return f"total_weight: {total_weight}, destinations: {total_destination}"
Hola, el error es porque la respuesta que has definido es un string. Cuando lo que debes regresar es un dictionary. Puedes cambiarlo sustituyendo el return por: return {"total_weight": total_weight, "destinations": total_destination}
después de resolver el ejercicio y ver las respuestas de muchos, mi recomendación es que no abusen de los bucles for dado que esto aumenta la complejidad.