2016-09-26 3 views
0

I는 (.csv 파일로부터 생성 된) 목록이 목록에서 최대에 대응하는 값을 찾기 :이와 같은 출력리스트

[('25.09.2016 01:00:00', 'MQ100D1_3_1_4', '225'), ('25.09.2016 02:00:00', 'MQ100D1_3_1_4', '173'), ('25.09.2016 03:00:00', 'MQ100D1_3_1_4', '106'), ('25.09.2016 04:00:00', 'MQ100D1_3_1_4', '74'), ('25.09.2016 05:00:00', 'MQ100D1_3_1_4', '84'), ('25.09.2016 06:00:00', 'MQ100D1_3_1_4', '122'), ('25.09.2016 07:00:00', 'MQ100D1_3_1_4', '110'), ('25.09.2016 08:00:00', 'MQ100D1_3_1_4', '177'), ('25.09.2016 09:00:00', 'MQ100D1_3_1_4', '301'), ('25.09.2016 10:00:00', 'MQ100D1_3_1_4', '552'), ('25.09.2016 11:00:00', 'MQ100D1_3_1_4', '812'), ('25.09.2016 12:00:00', 'MQ100D1_3_1_4', '922'), ('25.09.2016 13:00:00', 'MQ100D1_3_1_4', '970'), ('25.09.2016 14:00:00', 'MQ100D1_3_1_4', '1264'), ('25.09.2016 15:00:00', 'MQ100D1_3_1_4', '1338'), ('25.09.2016 16:00:00', 'MQ100D1_3_1_4', '1347'), ('25.09.2016 17:00:00', 'MQ100D1_3_1_4', '1491'), ('25.09.2016 18:00:00', 'MQ100D1_3_1_4', '1637'), ('25.09.2016 19:00:00', 'MQ100D1_3_1_4', '1544'), ('25.09.2016 20:00:00', 'MQ100D1_3_1_4', '974'), ('25.09.2016 21:00:00', 'MQ100D1_3_1_4', '503'), ('25.09.2016 22:00:00', 'MQ100D1_3_1_4', '359'), ('25.09.2016 23:00:00', 'MQ100D1_3_1_4', '218'), ('25.09.2016 23:59:59', 'MQ100D1_3_1_4', '132')......

첫 번째 요소는 시간 값이다. 두 번째는 측정 지점입니다. 세 번째는 해당 시간 간격으로 측정 한 차량의 양입니다.

총 536 개의 항목이 있습니다.

내 프로그램의 경우 최대 세 번째 요소는 12 시간 청크 (정오 이전, 정오 이전)입니다.

i = 0 topHour = [] for i in range(0, len(finalList), 12): values = max([int(i[-1]) for i in finalList[i:i+12]]) topHour.append(values)

이이 같은 출력으로 날을 제공합니다 : 나는 코드를 작성한 최대

그러나

[922, 1637, ...] 

을, 나는 (해당 시간 값을 얻는 방법 첫 번째 요소)? 이 예제에서 프로그램은 '25.09.2016 12:00:00''25.09.2016 18:00:00'을 최대 값과 함께 출력해야합니다.

답변

1

터플 (각 튜플의 마지막 항목에는 없음)에서 반복하고 에있는 key 함수를 사용하여 최대 값을 계산하는 데 사용되는 마지막 항목을 가져옵니다.

당신은 지능형리스트하여이 작업을 수행 할 수 있습니다

top_hour = [max(lst[i:i+12], key=lambda x: int(x[-1])) for i in range(0, len(lst), 12)] 
#       ^^^ 
print(top_hour)  
# [('25.09.2016 12:00:00', 'MQ100D1_3_1_4', '922'), ('25.09.2016 18:00:00', 'MQ100D1_3_1_4', '1637')] 
0

는 람다 함수가 적절한 사용, 당신은 그것을 좋아 할 수 있습니다

max(finalList[i:i+12]], key=lambda x: int(x[-1])) 

은 다음 트리플 더 처리 할 수 ​​있습니다. ..

btw, 코드에서 i은 모호합니다. 조심해야합니다.

관련 문제