技术问询:如何按匹配日期字符串查找嵌套列表中潮高index的最值?
自动分组计算每日潮汐最高/最低潮高
嘿,这个需求用Python处理超简单的,完全不用手动统计!核心思路是用字典来按日期分组存储潮高数据,然后对每组数据计算最值就行,我给你一步步拆解:
1. 数据分组思路
我们可以用日期字符串作为字典的键,对应的值是该日期下所有潮高的列表。遍历你的嵌套列表时,把每个子列表里的潮高(index 2)添加到对应日期的列表中,这样就能自动完成分组啦。
2. 完整代码示例
假设你的嵌套列表数据是这样的(我加了几个示例数据方便测试):
# 模拟你的潮汐数据嵌套列表 tide_records = [ ['Thursday 4 January', 11.58, 0.38], ['Thursday 4 January', 16.95, 0.73], ['Thursday 4 January', 22.12, 0.02], ['Friday 5 January', 3.45, 1.21], ['Friday 5 January', 9.01, 0.45], ['Saturday 6 January', 14.33, 0.89], ['Saturday 6 January', 20.55, 0.15] ] # 初始化字典用于分组存储 daily_tides = {} # 遍历原始数据完成分组 for record in tide_records: date = record[0] height = record[2] # 如果日期不在字典里,先创建空列表 if date not in daily_tides: daily_tides[date] = [] # 添加潮高到对应日期的列表 daily_tides[date].append(height) # 遍历分组后的数据,计算并输出结果 for date, heights in daily_tides.items(): min_height = min(heights) max_height = max(heights) # 按照要求的格式输出,保留两位小数 print(f"{date}: {min_height:.2f} meters at lowest and {max_height:.2f} meters at highest")
3. 代码解释
- 首先我们用
daily_tides这个字典来分组,键是日期,值是该日期的所有潮高集合; - 遍历原始数据时,自动判断日期是否已经在字典中,没有就新建列表,有就直接追加潮高;
- 最后用
min()和max()函数直接计算每组的最值,再用f-string格式化输出成你要的样式。
运行这段代码后,输出会是:
Thursday 4 January: 0.02 meters at lowest and 0.73 meters at highest Friday 5 January: 0.45 meters at lowest and 1.21 meters at highest Saturday 6 January: 0.15 meters at lowest and 0.89 meters at highest
刚好符合你想要的格式,而且不管你有多少天的数据,都能自动处理,完全不用手动比对~
内容的提问来源于stack exchange,提问作者user11201240
相关产品推荐
相关产品推荐

