Python统计CSV单词频率出现多余重复输出问题求解
12.9 LAB: Word frequencies (lists) 问题修复
需求说明
从CSV文本文件中区分大小写统计单词频率,要求每个单词仅在首次出现时打印单词及对应总出现次数,无重复输出。
示例场景:输入文件为input1.csv,文件内容为hello,cat,man,hey,dog,boy,Hello,man,cat,woman,dog,Cat,hey,boy,按规则输出对应统计结果即可。
错误原因
你的代码存在3处问题,其中第2点是多余输出的直接诱因:
lst.count()调用缺少必填参数,统计指定元素出现次数需要传入目标元素i,否则会直接触发参数不足的语法错误- 读取文件行内容时没有清理末尾的换行符,split后最后一个单词会携带
\n,和前面的同名字符串被判定为不同元素,因此会额外触发打印逻辑,输出多余的boy 1 lst2.append(i)的缩进位置不合理,当前写在if分支外会导致lst2存入大量重复元素,虽然不影响输出结果但会降低判断效率,建议移至if分支内部,仅保存已经打印过的不重复单词
修改后代码
user = open(input()) # 读取行后用strip()去掉首尾空白字符(含换行符) word = user.readline().strip() lst = word.split(',') lst2 = [] for i in lst: if i not in lst2: # 给count方法传入要统计的元素i print(i, lst.count(i)) # append移至if分支内,仅存储已打印的不重复单词 lst2.append(i) user.close()
补充说明:你代码开头导入的csv模块没有用到,不需要可以删除;如果要遵循文件操作最佳实践,也可以用with语法自动关闭文件,避免资源泄漏。
内容的提问来源于stack exchange,提问作者alanababi
相关产品推荐
相关产品推荐

