2011-01-26 6 views
23

이 같은 목록이파이썬 - 중첩 된 목록의 두 번째 열에서 최대 값 찾기

alkaline_earth_values = [['beryllium', 4], ['magnesium', 12],['calcium', 20], ['strontium', 38], ['barium', 56], ['radium', 88]] 

나는 단순히 max(list) 방법을 사용하는 경우, 그것은 그러나 내가 반환하기 위해 노력하고있어, 나는 최대의 이름을 찾기 위해 노력 경우 올바른 것 응답 스트론튬을 반환합니다 정수가 가장 큰 요소

+3

여기에 대한 답변은 완벽하지만 좋은 내용입니다. [비슷한 질문] (http://stackoverflow.com/questions/14884220/search-the-biggest-number-of-one-column- in-a-list-of-list-python # 14884336)이 하나의 복사본으로 닫혔지만 그럼에도 불구하고 이것들과 다른 몇 가지 유용한 해답이 있습니다. –

답변

46
max(alkaline_earth_values, key=lambda x: x[1]) 

이유는 . 최대은 시퀀스의 각 요소에 대해 해당 함수를 호출합니다. 그리고 "lambda x : x [1]"은 목록을 취하여 첫 번째 요소 (0부터 시작하여 계산)를 반환하는 작은 함수를 만듭니다. 그래서

k = lambda x: x[1] 

이 같은 상황에서 사용할

def k(l): 
    return l[1] 

하지만 짧고 좋은 말과 동일합니다.

+0

대단히 감사합니다. 챔피언처럼 일했습니다. – davelupt

+0

평범한 사람들이하는 일에 대해 설명해 주시겠습니까? x : x [1]은 위치를 정의한다는 것을 이해할 것입니다. 0으로 1을 대입하면 올바른 최대 문자열 값을 반환하기 때문입니다. 그러나 파이썬 라이브러리를 보면서 키와 람다의 요점을 완전히 이해하지는 못합니다. – davelupt

+1

key는 max() 내장 함수의 키워드 인수입니다. 핵심 인수는 호출 가능 함수 (함수, 람다 등)이어야하며 iterable 요소가 비교할 값을 반환해야합니다. "lambda : x [1]"은 Python 슬라이스 표기법을 지원하는 무언가의 두 번째 요소를 반환하는 익명 함수 (lambda)를 만듭니다. –

5

인수는 key입니다. 최대 함수의 인수가 최대이 최대의 요소가 검색됩니다되는 값을 알고 자 할 때 호출되는 함수를 지정하기 때문에이 작품

max(alk..., key=operator.itemgetter(1)) 
관련 문제