在列表中找到最大值对应的值

2024-10-06 06:57:05 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: csvin程序元素列表for数量间隔
2条回答

迭代元组(而不是每个元组中的最后一个项)并使用key中的max函数获取用于计算最大值的最后一个项

您可以使用列表来执行此操作:

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是不明确的,您应该小心

相关问题 更多 >