2012-03-27 4 views

답변

5

당신은 표준 heapq module를 사용하여이 작업을 수행 할 수 있습니다

>>> lst = ['hello', 'blah', 'boo', 'braininess'] 
>>> heapq.nlargest(2, lst, key=len) 
['braininess', 'hello'] 
1

를 A는 문자열 목록의 경우, a.sort (키 = LEN)는 그 길이로 문자열 목록을 정렬합니다. 가장 긴 것은 [-1]이고, 두 번째로 긴 것은 [-2]가됩니다. `

5
이 다음과 같이 key 인수로 다른 내장 함수 len을 사용하여 sorted() 기능을 사용하다 할

가장 쉬운 방법;

>>> foo = ['dddd', 'ccc', 'bb', 'a', 'eeeee'] 
>>> sorted(foo, key=len)[-2] 
'dddd' 

또는 당신이 필요로하는 경우 두 개의 긴 :

>>> sorted(foo, key=len)[-2:] 
['dddd', 'eeeee'] 
0
l = ['123', '12345', '12'] 
l.sort(key=lambda item: len(item)) 
l.[-1] # longest 
l.[-2] # second longest 
+2

람다를 사용한다면 더 일반적인 액세스를 위해 내림차순으로''-len (item)''을 쓰면 좋겠지 만, 내장 된''len''을주는 것이 더 쉬울 것입니다 ''key'' 인수로 사용합니다. –

+0

감사합니다. Lattyware - 그 사실을 알지 못했습니다. 나는 메모를 할게. – Adobe

관련 문제