如何从含日期与索引的嵌套列表中收集日期相同的索引?
解决日期索引分组问题
需求明确:将输入列表中同一日期对应的所有索引分组到子列表中,最终输出包含这些分组的新列表(示例中仅保留了包含多个索引的分组,若需保留所有日期的分组可调整逻辑)。
现有代码问题分析
- 尝试代码1:变量
x未定义,count变量无实际作用,逻辑无法实现分组,仅能打印部分匹配项,完全不符合需求。 - 尝试代码2:条件
if 1!=x是笔误(应为i!=x),且仅打印匹配的日期对,未收集索引,同时嵌套循环会导致重复比较,效率极低(对于1000条数据会执行100万次循环)。
正确解决方案
使用字典按日期分组索引是最简洁高效的方式,时间复杂度为O(n)(n为输入列表长度),适合处理1000条数据的规模:
date_list = [["2022-01-01", 3], ["2010-01-01", 1], ["2022-01-01", 12]] # 初始化字典用于分组:键是日期,值是对应索引的列表 date_index_map = {} for date, idx in date_list: if date not in date_index_map: date_index_map[date] = [] date_index_map[date].append(idx) # 生成结果:仅保留包含多个索引的分组(若要保留所有日期分组,直接取date_index_map.values()即可) result = [indices for indices in date_index_map.values() if len(indices) > 1] print(result) # 输出: [[3, 12]]
代码说明
- 遍历输入列表,将每个日期对应的索引存入字典的对应列表中;
- 最后根据需求过滤结果:如果需要保留所有日期的索引分组,直接使用
list(date_index_map.values()),结果会是[[3,12], [1]];如果只需要有多个索引的分组,就加上长度判断。
内容的提问来源于stack exchange,提问作者Mætju
相关产品推荐
相关产品推荐

