Python生成章节-段落词数字典出错,结果为章节总词数求排查
问题排查:生成章节段落词数列表的代码错误
问题背景
给定book字符串列表(元素对应书籍每行内容,段落以空字符串分隔,章节标题与前后内容以两个空字符串分隔),目标是生成chapter_words字典:键为章节标题('I'/'II'/'III'/'IV'/'V'),值为对应章节内各段落的词数组成的列表。
已成功生成chapter_paragraphs字典(格式示例:{'I': ['line1 line2', 'line3 line4'], ...}),但后续生成chapter_words的代码未得到预期结果,字典值变成了章节总词数而非段落词数列表。
错误原因
代码存在变量名拼写不一致的问题:
- 循环内初始化的段落词数列表变量是
words_per_parag - 但后续添加词数和赋值时使用的是
words_per_paragraph
这两个是完全独立的变量,若words_per_paragraph在外部已被定义,会导致所有章节的词数都追加到同一个全局列表中;若未定义则会直接触发报错。最终导致输出结果不符合预期。
修正后的代码
chapter_words = {} for chapter, paragraphs in chapter_paragraphs.items(): words_per_paragraph = [] # 统一变量名 for parag in paragraphs: words = parag.split() count = len(words) words_per_paragraph.append(count) # 使用正确的变量名 chapter_words[chapter] = words_per_paragraph
验证结果
修正后,chapter_words会生成预期格式,示例如下:
{'I': [2, 2], 'II': [3, 6, 7], ...}
内容的提问来源于stack exchange,提问作者mari00
相关产品推荐
相关产品推荐

