嵌套列表数据集mainlist统计Top1000高频词的Counter实现异常咨询
错误原因
直接传mainlist给Counter会直接报错,因为mainlist是嵌套列表,它的一级元素是各个子列表,不是待统计的单个词。Counter迭代mainlist时拿到的是不可哈希的子列表,既没法作为统计键,也完全没遍历到你要统计的词语本身。
可行实现方案
首先把嵌套列表拍平为一维的词语列表,再传入Counter统计即可,代码示例:
from collections import Counter # 拍平两层嵌套结构,取出所有单个词语 flat_word_list = [word for sublist in mainlist for word in sublist] # 统计词频并取出频率前1000的词语 counts_top1000 = [word for word, word_count in Counter(flat_word_list).most_common(1000)]
可选优化
如果你的数据里存在空字符串、无意义占位值,可以在拍平的同时做过滤,避免无效值被纳入统计:
flat_word_list = [ word.strip() for sublist in mainlist for word in sublist if word and str(word).strip() != "" ]
额外排查点
如果运行上述代码仍报错,优先检查两个点:
- 嵌套结构的叶子节点是否都是可哈希类型(通常为字符串),如果子列表里混入了列表、字典等不可哈希的元素,需要先做数据清洗
- 如果嵌套层级不止两层,需要调整拍平逻辑,把所有叶子节点的词语全部抽出来再做统计
内容的提问来源于stack exchange,提问作者user15479632
相关产品推荐
相关产品推荐

