如何筛选嵌套列表中目标子列表的最高频次项并识别状态标识
解决方案
核心思路
用字典做分组容器,把前11个字符串整数组成的元组作为唯一键,对应存储该组的状态和出现次数。遍历列表时,若键已存在,就对比当前条目与已存条目的出现次数,保留次数更多的;若不存在则直接存入。
代码实现
# 示例输入列表 listA = [ ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "up", 5], ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "down", 10], ["2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "up", 7], ["2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "down", 6] ] # 初始化分组字典 grouped_data = {} for item in listA: # 拆分条目:前11项转成元组(可作为字典键)、状态、出现次数 key = tuple(item[:11]) current_status = item[11] current_count = item[12] if key not in grouped_data: grouped_data[key] = (current_status, current_count) else: # 对比次数,保留更大的条目 existing_status, existing_count = grouped_data[key] if current_count > existing_count: grouped_data[key] = (current_status, current_count) # 提取每个分组对应的最优状态 final_result = {k: v[0] for k, v in grouped_data.items()} # 打印结果示例 for key, status in final_result.items(): print(f"前11项组合: {key},最优状态: {status}")
代码说明
- 分组键设计:将前11个字符串整数转为元组作为字典键,因为列表不可哈希无法作为键,元组的可哈希性能保证相同的11项组合对应唯一键。
- 逻辑处理:遍历过程中完成分组与筛选,无需额外遍历两次,效率更高。遇到重复分组时直接对比次数,替换为次数更高的状态条目。
- 结果输出:最终字典的键是11项组合的元组,值是该组合对应的最优状态,按需提取即可。
内容的提问来源于stack exchange,提问作者damian2345673
相关产品推荐
相关产品推荐

