essayer:
max(nested_list, key=lambda x: x[1])
ou
import operator
max(nested_list, key=operator.itemgetter(1))
Si le premier élément sera toujours 'a'
, vous pouvez juste faire
max(nested_list)
Si vous êtes prêt à plonger dans des vérification de type et que vous voulez faire pour les sous-listes arbitraires (d'un seul niveau. , 'a', 12, 42, 'b']), vous pouvez faire quelque chose comme.
import numbers
max(nested_list, key=lambda x: max(i for i in x
if isinstance(i, numbers.Integral)))
Dans tous les cas, si vous n'êtes pas sûr que les éléments de nested_list
sont dans les listes de fait, vous pouvez faire
import collections
max((s for s in nested_list
if isinstance(s, collections.Sequence)),
key=some_key_function)
et passer juste une fonction clé de votre propre conception ou d'un des autres dans cette réponse.
En termes de lambda x: x[1]
par rapport à operator.itemgetter(1)
question, je voudrais profiler. En principe, itemgetter
devrait être la seule bonne façon, mais j'ai vu operator
solutions sont surpassées par la fonction lambda faire à «bogues» (j'utilise le terme vaguement, le code fonctionne toujours) en operator
. Ma préférence serait pour itemgetter
si la performance n'a pas d'importance (et probablement si c'est le cas), mais certaines personnes aiment éviter les import
supplémentaires.
J'ai eu recours à mes livres de Python pour trouver votre solution. Donc, non seulement j'ai maintenant une solution, je comprends un peu plus python. Merci! –