需求实现:统计连续整数序列长度并映射至对应id
解决连续整数序列长度匹配问题
嘿,我来帮你搞定这个需求!你手里有个带id字段的数据集,id取值是1、2、3、4、7、8,现在要给每个id标注它所在的连续整数序列的长度对吧?我给你捋清楚实现思路,再附上可运行的代码示例。
实现思路
- 先确保id列表是有序的(毕竟实际数据集可能不是按顺序给出的,排序后更方便识别连续区间)
- 遍历排序后的id,把连续的整数归为一个区间,比如这里的
1-4和7-8,每个区间的长度就是4和2 - 最后把每个id映射到对应区间的长度,按原始id顺序输出结果即可
代码示例(Python)
# 原始id列表 ids = [1, 2, 3, 4, 7, 8] # 先排序(应对原始数据无序的情况) sorted_ids = sorted(ids) # 识别所有连续整数区间 intervals = [] current_start = sorted_ids[0] current_end = sorted_ids[0] for id in sorted_ids[1:]: if id == current_end + 1: current_end = id else: intervals.append((current_start, current_end)) current_start = id current_end = id # 添加上最后一个区间 intervals.append((current_start, current_end)) # 构建id到对应序列长度的映射 id_count_map = {} for start, end in intervals: sequence_length = end - start + 1 # 给区间内的每个id赋值长度 for id in range(start, end + 1): id_count_map[id] = sequence_length # 按原始id顺序输出结果 print("id count") for id in ids: print(f"{id} {id_count_map[id]}")
运行结果
运行上面的代码后,会得到你预期的输出:
id count
1 4
2 4
3 4
4 4
7 2
8 2
内容的提问来源于stack exchange,提问作者naina
相关产品推荐
相关产品推荐

