2017-01-22 3 views
3

인덱스 1에 최소값을 가진 튜플을 원한다는 튜플 목록을 가지고 있습니다. 예를 들어, 내 목록과 같은 경우 : 요소의 최소 값을 가진 튜플 목록에서 튜플을 추출하는 우아한 방법

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

내가 반환 된 튜플 ('x', 1)되고 싶어요.

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

그것을 할 수있는 더 나은 방법이 있나요 :

현재 내가 좋아하는이 결과는 얻을 수 sorted 기능을 사용하고? 어쩌면 min 기능과 함께?

+0

합니다. –

답변

7

key 매개 변수와 함께 min() 함수를 사용하여 목록에서 최소 값을 갖는 튜플을 찾을 수 있습니다. 목록을 정렬 할 필요가 없습니다.

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

더 나은

operator.itemgetter() 대신 람다 식를 사용하는; 같은 따라서, 귀하의 min 호출해야한다 으로 itemgetter이 비교적 빠릅니다. 이 경우, min 함수를 호출해야합니다 같은 :

>>> from operator import itemgetter 

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

참고 : min() 파이썬의 내장 기능입니다. 변수 이름으로 사용하면 안됩니다.

1

이것은 또한 작동합니다 : 좋은 솔루션입니다

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