2014-10-02 1 views
1

데이터 파일에서 최대 강우량을 찾으려고합니다. [4] 요소의 강수량 열은 1340 줄의 긴 파일입니다.Python 목록에서 최대 요소를 찾는 방법

Date,Day,High T,Low T,Precip,Snow,Snow Depth 
1/1/10,1,41,19,0,0,5 

여기가 max_precip을 찾기 위해 노력하고있어 루프입니다 :

for line in fo: 
    max_precip = max(line.split(",")[4]) 

어떤 도움이나 여기 지침은 크게 감상 할 수 다음은 파일의 데이터 라인의 예입니다. 고마워요!

+1

numpy가 데이터를 읽고 처리하는 것을 고려 했습니까? – usethedeathstar

답변

5

당신은 모든 라인이 적용해야하며, 먼저 정수로 침전 값을 변환해야합니다 :

max_precip = max(fo, key=lambda line: int(line.split(',')[4])) 

이 최대 강수량을 포함하는 전체 라인 반환합니다. 헤더 줄을 이미 제거했다고 가정합니다.

쉼표 분리를 처리하려면 csv module을보고 싶을 수 있습니다.

단지 침전 최대 얻고 다른 모든 것들을 무시하려면, 발전기 식을 사용

max_precip = max(int(line.split(',')[4]) for line in fo) 

데모 : 나는에서 최대 강우량을 찾기 위해 노력하고있어

>>> fo = '''\ 
... 1/1/10,1,41,19,0,0,5 
... 1/2/10,1,38,18,2,0,6 
... 1/3/10,1,43,17,1,0,6 
... '''.splitlines() 
>>> max(fo, key=lambda line: int(line.split(',')[4])) 
'1/2/10,1,38,18,2,0,6' 
>>> max(int(line.split(',')[4]) for line in fo) 
2 
+0

시도 할 때 구문 오류가 발생합니다. 죄송합니다. 프로그래밍에 새로운 브랜드입니다. 나는 당신의 코드의 어떤 부분이 루프를 모든 라인에 적용하는지 보지 않는다. – Hense

+0

@Hense : 저는'fo'를 연속으로 사용합니다. –

+0

@Hense : 다시 테스트했는데 구문 오류가 없습니다. 아마도 이전에 줄의 괄호를 닫는 것을 잊었을 것입니까? –

1

데이터 파일.

원하는 경우 내장 된 max 기능에 전달하기 전에 데이터를 사전 처리해야 할 수 있습니다.

max_precip = max(int(line.split(',')[4]) for line in fo)