2017-01-22 1 views
3

Ich habe eine Liste von Tupel, aus dem ich das Tupel mit dem Mindestwert bei Index 1 haben möchte. Wenn zum Beispiel meine Liste ist wie:Elegante Möglichkeit, ein Tupel aus einer Liste von Tupeln mit Mindestwert des Elements zu extrahieren

a =[('a', 2), ('ee', 3), ('mm', 4), ('x', 1)] 

ich das zurückgegebene Tupel ('x', 1) sein wollen.

Derzeit bin ich mit sorted Funktion dieses Ergebnis wie zu bekommen:

min=sorted(a, key=lambda t: t[1])[0] 

Gibt es bessere Möglichkeiten, es zu tun? Vielleicht mit min Funktion?

+0

, die eine gute Lösung ist. –

Antwort

7

Sie können min() Funktion mit key Parameter verwenden, um das Tupel mit Mindestwert in der Liste zu finden. Es besteht keine Notwendigkeit, die Liste zu sortieren. Daher sollten Sie Ihre min Aufruf wie:

>>> min(a, key=lambda t: t[1]) 
('x', 1) 

Noch besser operator.itemgetter() zu verwenden, anstatt Lambda-Ausdruck; wie itemgetter sind vergleichsweise schneller. In diesem Fall soll der Aufruf von min Funktion wie:

>>> from operator import itemgetter 

>>> min(a, key=itemgetter(1)) 
('x', 1) 

Hinweis: min() ist eine in-integrierte Funktion in Python. Sie sollten es nicht als Variablennamen verwenden.

1

Dies wird auch funktionieren:

min([x[::-1] for x in a])[::-1] 
# ('x', 1) 
Verwandte Themen