如何在Python中按重复日期拆分潮汐数据嵌套列表?
按日期分组潮汐数据的解决方案
嘿,我来帮你搞定这个潮汐数据分组的问题!这里有两种实用的Python实现方式,你可以根据自己的需求选择:
方法一:使用字典分组(无需原列表有序)
这种方法最稳妥,不管你的原始数据是不是按日期排序的,都能正确把同一日期的记录归到一组:
tideData = [ ['Thursday 4 January', 11.58, 0.38], ['Thursday 4 January', 16.95, 0.73], ['Friday 5 January', 6.48, 0.83], ['Friday 5 January', 12.42, 0.33], ['Saturday 6 January', 0.5, 0.02], ['Saturday 6 January', 7.18, 0.85], ['Friday 2 February', 23.52, 0.04] ] # 初始化一个空字典来存储分组结果 grouped_tides = {} # 遍历每条潮汐记录 for entry in tideData: date = entry[0] # 提取日期作为分组键 # 如果日期不在字典里,先创建对应的空列表 if date not in grouped_tides: grouped_tides[date] = [] # 将当前记录添加到对应日期的列表中 grouped_tides[date].append(entry) # 把字典的值转换成你需要的嵌套列表格式 tideData_grouped = list(grouped_tides.values()) # 输出结果看看 print(tideData_grouped)
运行这段代码后,你会得到符合要求的结构:
[ [['Thursday 4 January', 11.58, 0.38], ['Thursday 4 January', 16.95, 0.73]], [['Friday 5 January', 6.48, 0.83], ['Friday 5 January', 12.42, 0.33]], [['Saturday 6 January', 0.5, 0.02], ['Saturday 6 January', 7.18, 0.85]], [['Friday 2 February', 23.52, 0.04]] ]
方法二:使用itertools.groupby(需原列表按日期排序)
如果你的原始数据已经是按日期顺序排列的,那么用itertools.groupby会更简洁:
from itertools import groupby tideData = [ ['Thursday 4 January', 11.58, 0.38], ['Thursday 4 January', 16.95, 0.73], ['Friday 5 January', 6.48, 0.83], ['Friday 5 January', 12.42, 0.33], ['Saturday 6 January', 0.5, 0.02], ['Saturday 6 January', 7.18, 0.85], ['Friday 2 February', 23.52, 0.04] ] # 按日期分组,lambda函数用来提取分组的键(这里是每个条目的第一个元素:日期) tideData_grouped = [list(group) for key, group in groupby(tideData, key=lambda x: x[0])] print(tideData_grouped)
注意事项:
groupby是连续分组的,如果同一日期的记录在原列表中被其他日期隔开,会被分成不同的组。所以使用这个方法前,确保你的数据已经按日期排序好了。- 字典分组的方法没有这个限制,无论记录顺序如何,都能把同一日期的记录归到一起。
内容的提问来源于stack exchange,提问作者c0nfusionist
相关产品推荐
相关产品推荐

