簡體   English   中英

在列表列表中找到最大值的對應值

[英]Find corresponding value with maximum in a list of lists

我有一個列表(從.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'以及最大值。

遍歷元組(而不是每個元組中的最后一項),並使用maxkey函數獲取用於計算最大值的最后一項。

您可以通過列表理解來做到這一點:

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')]

使用lambda函數是合適的,您可以這樣:

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

那么您可以進一步處理三元組...

順便說一句,在您的代碼中, i是模棱兩可的,您應該小心。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM