Trouver la valeur max. dans la deuxième colonne d'une liste imbriquée?
J'ai une liste comme ceci:
alkaline_earth_values = [['beryllium', 4], ['magnesium', 12],['calcium', 20],
['strontium', 38], ['barium', 56], ['radium', 88]]
Si j'utilise simplement le max(list)
méthode, il sera de retour la réponse 'strontium'
, ce qui serait correct si j'essayais de trouver le max nom, cependant, je vais essayer de retourner l'élément dont l'entier le plus élevé.
- Les réponses sont ici parfaitement bien, mais il peut également être utile de vérifier une question similaire, qui a été fermé comme étant un doublon de celui-ci, mais a néanmoins quelques réponses utiles qui ne sont pas les même que ceux-ci.
max(alkaline_earth_values)
renvoie en fait['strontium', 38]
, il est donc de vous donner le nom et la valeur de paire avec le maximum de valeur.
InformationsquelleAutor davelupt | 2011-01-26
Vous devez vous connecter pour publier un commentaire.
La raison pour laquelle cela fonctionne est parce que le clé argument de la max fonction spécifie une fonction qui est appelée lorsque max veut connaître la valeur maximale de l'élément recherché. max va appeler cette fonction pour chaque élément de la séquence. Et
lambda x: x[1]
crée une petite fonction qui prend une liste et renvoie le premier (le comptage commence à partir de zéro) de l'élément. Doncest la même chose que de dire
mais plus court et agréable à utiliser dans des situations de ce genre.
Utiliser le
key
argument.il est plutôt difficile de supposer qu'un élément dans une liste est en fait toujours un nombre. Si les numéros sont devenus des cordes, les
max()
sera le retour de la "valeur" avec le plus grand nombre premier:retourne
['beryllium', '9']
fera l'affaire, lorsque vous êtes sûr que ça va être un certain nombre
Pour la grande vitesse envisager des pandas ou des numpy: