2016-09-26 3 views
0

私は(.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')......

最初の要素は、時間値です。 2番目は測定ポイントです。その時間間隔で測定された車の3番目の量。

合計536件のアイテムがあります。

私のプログラムでは、3番目の要素の最大値が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関数を使用して、最大値を計算するために使用される最後の項目を取得します。あなたはリスト内包でこれを行うことができます

:あなたは、さらにトリプルを処理することができ

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

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

ラムダ関数を使用が適切である、あなたは次のようにそれを行うことができます。 ..

btw、あなたのコードでは、iはあいまいです。ご注意ください。

関連する問題