【发布时间】:2018-10-27 00:08:55
【问题描述】:
我有一长串采用这种形式的元组
num_list = [('A1', 4, 'FF', 977.98), ('A4', 14, 'CC', 249.12), ('A1', 14, 'EE', 386.42), ('A9', 19, 'BB', 919.21), ('A4', 14, 'CC', 109.80)]
每个元组的第一个元素对应一个ID,第二个是事件发生的日期,第三个是事件的类别,第四个是事件的值。
任务是打印前 5 天的最大值,例如在第 6 天,对于每个单独的 ID,即基本形式的东西,只应考虑第 1 天到第 5 天的事件
Day ID Max
7 A1 400
7 A2 350
8 A1 750
目前我在声明 num_list 后有以下代码,其中 ID 是所有 ID 值的集合。 14 和 18 用于天数到第 19 天
first_value = 1
fifth_value = 5
for id in ID:
while first_value <= 14 and fifth_value <= 18:
result = max([i for i in num_list if i[1] <= fifth_value and i[1] >= first_value and i[0] == id], key = lambda x:x[3])
first_value += 1
fifth_value += 1
print(f"result[0]} {result[1]} {result[3]}")
问题在于这仅返回第一个 ID 的最大结果,在本例中为 A1。这是正确的,但我不确定为什么它不是为每个 ID 都这样做。我已经检查过,在 while 循环之前它会返回每个 ID,所以我不确定这里的问题是什么
先谢谢了,如果以前发布过类似的东西,我很抱歉,但我找不到它
【问题讨论】:
-
您的
f字符串中没有{吗? -
我添加了一些sn-p 代码来查找某天范围内的最大值。希望你看看它。
标签: python list for-loop while-loop tuples