Versuch:
max(nested_list, key=lambda x: x[1])
oder
import operator
max(nested_list, key=operator.itemgetter(1))
Wenn das erste Element immer 'a'
sein wird, können Sie einfach tun
max(nested_list)
Wenn Sie bereit sind, in einige tauchen Typprüfung und Sie wollen dies für beliebige Unterlisten tun (Nur für eine Ebene. Etwas wie [12 , 'a', 12, 42, 'b']), können Sie etwas wie.
import numbers
max(nested_list, key=lambda x: max(i for i in x
if isinstance(i, numbers.Integral)))
In jedem Fall, wenn Sie nicht sicher sind, dass die Elemente nested_list
in der Tat Listen sind, können Sie
import collections
max((s for s in nested_list
if isinstance(s, collections.Sequence)),
key=some_key_function)
tun und es nur eine Schlüsselfunktion Ihres eigenen Planen Pass oder einem der anderen in dieser Antwort.
In Bezug auf die lambda x: x[1]
vs operator.itemgetter(1)
Frage, würde ich Profil. In Princible, itemgetter
sollte der eine richtige Weg sein, aber ich habe gesehen, operator
Lösungen outperformed von Lambda-Funktion zu "Bugs" (ich benutze den Begriff locker, der Code funktioniert immer noch) in operator
. Meine Präferenz wäre für itemgetter
, wenn die Leistung keine Rolle spielt (und wahrscheinlich, wenn dies der Fall ist), aber einige Leute mögen es, die zusätzliche import
zu vermeiden.
Ich musste meine Python Bücher greifen Ihre Lösung herauszufinden. Also, ich habe jetzt nicht nur eine Lösung, ich verstehe ein wenig mehr Python. Vielen Dank! –