¿Encontrar el valor máximo en la segunda columna de una lista anidada?

Tengo una lista como esta:

alkaline_earth_values = [['beryllium', 4], ['magnesium', 12],['calcium', 20], ['strontium', 38], ['barium', 56], ['radium', 88]] 

Si simplemente utilizo el método max(list) , devolverá la respuesta 'strontium' , lo cual sería correcto si estuviera tratando de encontrar el nombre máximo, sin embargo, estoy intentando devolver el elemento cuyo entero es más alto.

 max(alkaline_earth_values, key=lambda x: x[1]) 

La razón por la que esto funciona es porque el argumento clave de la función max especifica una función que se llama cuando max quiere saber el valor por el cual se buscará el elemento máximo. max llamará a esa función para cada elemento en la secuencia. Y lambda x: x[1] crea una pequeña función que toma en una lista y devuelve el primer elemento (el conteo comienza desde cero). Asi que

 k = lambda x: x[1] 

es lo mismo que decir

 def k(l): return l[1] 

pero más corto y agradable de usar en situaciones como esta.

Usa el argumento key .

 max(alk..., key=operator.itemgetter(1)) 

es bastante difícil suponer que un elemento de una lista sigue siendo un número. Si los números se han convertido en cadenas, el max() devolverá el “valor” con el primer número más alto:

 alkaline_earth_values = [['beryllium', '9'], ['magnesium', '12'],['calcium', '20'], ['strontium', '38'], ['barium', '56'], ['radium', '88']] max(alkaline_earth_values, key=lambda x: x[1]) 

devuelve ['beryllium', '9']

 max(alkaline_earth_values, key=lambda x: float(x[1])) 

hará el truco, cuando esté seguro de que será un número

Para alta velocidad considera pandas o numpy:

 Import pandas as pd alkaline_earth_values = [['beryllium', 4], ['magnesium', 12],['calcium', 20], ['strontium', 38], ['barium', 56], ['radium', 88]] pd.DataFrame(alkaline_earth_values)[1].max()