Stack Overflow en español Asked on August 26, 2021
Hice este codigo:
print( max(lista[1]), " con un " , max(lista[2] , " %")
pero solo me sale el nombre y no el número, imprime esto:
SIAGUA con un SIAGUA %
Deseo el máximo y el minimo de la lista, debería imprimir:
Amazonas con un 76.14 %
Otra forma más corta, sin crear una lista intermedia:
departamentos = [{'Departamento': 'Lima', 'SIAGUA': 6.2},
{'Departamento': 'Piura', 'SIAGUA': 68.95},
{'Departamento': 'Amazonas', 'SIAGUA': 76.14}]
maximo = max(departamentos, key=lambda d: d["SIAGUA"])
minimo = min(departamentos, key=lambda d: d["SIAGUA"])
print(f"Maximo: {maximo['Departamento']} con {maximo['SIAGUA']}%")
print(f"Minimo: {minimo['Departamento']} con {minimo['SIAGUA']}%")
El truco está en que max
/min
recibe un parametro key
que le indica en base
a que buscar el máximo/mínimo de la lista.
Answered by braver on August 26, 2021
Veo que la lista esta ordenada de mayor a menor, entonces puedes lograr lo que quieres asi:
mayor = lista[len(lista)-1]
print(mayor['Departamento'] + " con un " + str(mayor['SIAGUA']) + "%")
Edit: Si no estan ordenados los puedes ordenar asi:
def encontrar_sigua(elemento):
return elemento['SIAGUA']
lista.sort(key=encontrar_sigua)
Y despues usar el codigo de arriba.
Answered by Cosmeoes on August 26, 2021
Por el título de la pregunta, se ve que requieres extraer el valor mínimo y el valor máximo.
Código:
lista_departamentos = [{'Departamento': 'Lima', 'SIAGUA': 6.2}, {'Departamento': 'Tumbes', 'SIAGUA': 61.36}, {'Departamento': 'Pasco', 'SIAGUA': 66.93}, {'Departamento': 'Ica', 'SIAGUA': 68.12}, {'Departamento': 'Piura', 'SIAGUA': 68.95}, {'Departamento': 'Amazonas', 'SIAGUA': 76.14}]
# Usamos comprensión de listas para extraer el valor asignado a SIAGUA en cada departamento y lo almacenamos en la lista.
valores = [departamento['SIAGUA'] for departamento in lista_departamentos]
# Con la función max y min extraemos el mayor y menor valor de la lista.
valor_minimo = min(valores)
valor_maximo = max(valores)
# Luego, podrías recorrer la lista de nuevo y con los valores ya podrías sacar según la condición lo
que necesitas:
for departamento in lista_departamentos:
if (departamento['SIAGUA'] == valor_minimo):
print("Departamento: ", departamento['Departamento'], "con un ", valor_minimo, "%")
elif (departamento['SIAGUA'] == valor_maximo):
print("Departamento: ", departamento['Departamento'], "con un ", valor_maximo, "%")
Resultado:
$ -> python3 max_list.py
Departamento: Lima con un 6.2 %
Departamento: Amazonas con un 76.14 %
Está explicado lo que hace dentro del código. Si buscas algo más que esto edita la pregunta.
Answered by Adrián on August 26, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP