TransWikia.com

Máximo y mínimo de un valor que se encuentra dentro de un diccionario y dentro de una lista

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 %

3 Answers

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

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP