Tengo una lista anidada:

list = [[4, 2], [3, 2], [1, 1]]

Y quiero encontrar el número mínimo en index[0] que tiene una constante (valor) de 2 en index[1].

Para esta lista, los elementos 1 y 2 tienen un valor de 2 en el índice [1] dentro de la lista anidada, por lo tanto, el 4 y el 3 cumplen los criterios y el número mínimo es 3, por lo que la salida debería ser 3

    for val in freqList:
        print(val[0])

Me da los valores en index[0] de la lista, pero no estoy seguro de cómo imprimir solo los valores de index[0] que tienen un valor de 2 en index[1] y luego cómo seleccionar el mínimo.

¿Alguna idea sobre cómo hacer esto?

-1
Ceedee Lamb 10 ene. 2022 a las 14:55
Quiero estar seguro, desea obtener el mínimo de los primeros elementos en las listas, cuyo segundo elemento es 2 dentro de la lista anidada, ¿verdad?
 – 
lapestand
10 ene. 2022 a las 15:08
Si tienes razon gracias por tu ayuda
 – 
Ceedee Lamb
10 ene. 2022 a las 15:33
Hola, @Cedee. Si mi respuesta o cualquier otra ha resuelto su pregunta, considere aceptarla haciendo clic en la marca de verificación. Esto indica a la comunidad en general que ha encontrado una solución y le da cierta reputación tanto al que responde como a usted mismo. No hay obligación de hacer esto.
 – 
lapestand
10 ene. 2022 a las 15:38

2 respuestas

La mejor respuesta

Si desea obtener el mínimo de los primeros elementos en las listas internas:

min([val[0] for val in freqList])

Además, si desea verificar las listas internas para conocer las condiciones:

min([val[0] for val in freqList if CONDITION)

Que si su condición es val[1] == 2 (también la respuesta de su pregunta)

min([val[0] for val in freqList if val[1] == 2])

O incluso puede verificar múltiples condiciones:

min([val[0] for val in freqList if ((val[1] == 2) and (len(val) == 2))])
1
lapestand 10 ene. 2022 a las 15:17
Verificar múltiples condiciones es útil, ¡gracias!
 – 
Ceedee Lamb
10 ene. 2022 a las 15:43

Puede definir una función como esta:

def find_minimum(where, const_id, const_val):
    values = []

    for i in where:
        if i[const_id] == const_val:
            values.append(i[0])

    return min(values)

Uso:

list = [[4, 2], [3, 2], [1, 1]]
minimum = find_minimum(list, 1, 2)
print(minimum)
0
Jirka Vopelka 10 ene. 2022 a las 15:26