python 函数返回字典时,其数据结构本身是紧凑的,但交互式环境(如 ipython/jupyter)会自动美化打印(pretty-print),导致键值对分行显示;实际返回值完全符合预期,无需修改逻辑。
在编写字符串子串位置查找函数时,你已正确实现了核心逻辑:遍历所有长度为 k 的子串,用 str.find() 循环收集每个子串在原字符串 s 中的所有起始索引,并以子串为键、索引列表为值构建字典。该函数 find_substring_locati

{'TT': [0, 4], 'TA': [1, 5], 'AA': [2], 'AT': [3], 'AG': [6], 'GG': [7, 8, 9], 'GC': [10, 12], 'CG': [11]}你观察到的“每行一个键值对”的输出,并非函数返回的结果格式问题,而是当前运行环境(极可能是 IPython、Jupyter Notebook 或某些 IDE 的交互式控制台)对字典对象的默认可视化行为。这类环境为提升可读性,会自动启用 pprint(pretty print)机制,将嵌套或较长的字典/列表格式化为多行缩进形式。
✅ 验证方式(推荐):
result = find_substring_locations('TTAATTAGGGGCGC', 2)
print(result) # 使用 print() 强制普通字符串输出 → 通常显示为单行
print(type(result)) # 确认类型为
print(len(result)) # 输出 8,说明字典含 8 个键值对 ⚠️ 注意事项:
总结:你的代码逻辑无误,输出格式差异纯属环境渲染所致。专注数据正确性而非显示样式,是 Python 开发中的重要认知习惯。