You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python按相邻间距条件循环拆分字典键为嵌套子列表

问题描述

我编写了一段生成字典的代码:

result = {6: 4, 12: 5, 17: 4, 23: 5, 28: 4, 36: 7, 37: 0, 46: 8, 52: 5, 57: 4, 62: 4, 89: 26, 113: 23, 134: 20, 136: 1, 149: 12, 161: 11, 173: 11, 175: 1, 178: 2, 201: 22, 202: 0, 209: 6}

该字典的键代表位置,值为对应字符间的间距。
需要筛选间距在0到9之间的条目,将所有间距满足0-9的连续位置段输出为独立子列表:遍历所有字典键,检查当前键与后续相邻键的间距,若间距在0-9区间则将对应键加入当前列表;若下一组间距大于9,则结束当前列表,新建列表重新开始检测。

目前已实现基础筛选功能,但无法生成嵌套列表结构,现有代码如下:

temp = []
jmax = 0
jmin = 9             
                
for i in range(0, len(result.keys())):
        j = i+1
        if j < len(result.keys()):
            key1 = list(result.keys())[i]
            key2 = list(result.keys())[j]
            var1 = key2 - key1
            if 0 <= var1 <= 9:
                temp.append(key1) if key1 not in temp else temp
                temp.append(key2) if key2 not in temp else temp    

print (temp)

期望输出结果:

[[6, 12, 17, 23, 28, 36, 37, 46, 52, 57, 62], 
[134, 136], 
[173, 175, 178], 
[201, 202, 209]]
解决方案

原代码存在三个核心问题:

  • 循环内反复将字典键转为列表,执行效率低
  • 仅维护单个扁平列表存储结果,没有设计分段存储逻辑,遇到间距大于9的断点时无法切分子列表
  • 循环结束后没有处理最后一段连续数据,容易漏项

直接使用以下代码即可实现需求:

# 提前提取键列表,Python3.7及以上版本字典默认保留键的插入顺序,原始字典键本身为升序排列
keys = list(result.keys())
res = []

if keys:
    # 初始化第一个连续段,放入第一个键
    current_segment = [keys[0]]
    # 从第二个键开始遍历比对
    for idx in range(1, len(keys)):
        prev_k = keys[idx-1]
        curr_k = keys[idx]
        gap = curr_k - prev_k
        if 0 <= gap <= 9:
            # 间距符合要求,加入当前连续段
            current_segment.append(curr_k)
        else:
            # 间距不符合要求,若当前段长度≥2说明是有效连续段,存入结果
            if len(current_segment) >= 2:
                res.append(current_segment)
            # 重置当前段,放入当前键开始新段检测
            current_segment = [curr_k]
    # 循环结束后补上最后一段有效连续数据
    if len(current_segment) >= 2:
        res.append(current_segment)

print(res)

运行后输出结果和期望完全一致。

代码中len(current_segment) >= 2的判断用于过滤孤立的单个键(这类键和前后位置的间距都大于9,不属于连续位置段),如果后续需要将单个孤立键也作为独立子列表输出,删除该长度判断即可。

内容的提问来源于stack exchange,提问作者Alexandre P Magalhães

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 19:39:19