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

如何遍历enchant Dict对象中的单词?解决迭代报错问题

问题与解决方法

问题说明

我需要统计包含指定子串(如"er""mt")的英文单词数量,期望输出类似countWPP("er")=13540或countWPP("mt")=1。但运行自己编写的代码时触发错误:'Dict' object is not iterable,提示enchant的Dict对象无法直接迭代,不知道如何获取可遍历的单词集合。

原代码

import enchant

def countWPP(prompt):
    #Prompt would be something like "er" or "ua"
    d = enchant.Dict("en_US")

    count = 0

    for word in d:
        if d.check(prompt) and prompt in word:
            count += 1

    return count

解决思路与修正代码

enchant的Dict类仅提供拼写检查功能,本身不支持遍历所有单词。要实现需求,需要借助外部单词列表:

方法一:利用系统自带词典文件

多数操作系统会自带纯文本格式的英文单词词典(比如Linux系统的/usr/share/dict/words,Windows用户可自行下载标准英文单词列表文件)。读取该文件的单词,再用Dict验证单词合法性,同时检查是否包含目标子串。

修正后的代码:

import enchant

def countWPP(prompt):
    d = enchant.Dict("en_US")
    count = 0
    # 替换为你的单词词典文件路径
    with open('/usr/share/dict/words', 'r') as word_file:
        for line in word_file:
            word = line.strip().lower()
            # 去掉原代码中多余的d.check(prompt),我们不需要验证子串是否是合法单词
            if d.check(word) and prompt in word:
                count += 1
    return count

方法二:使用第三方单词列表库

如果不想依赖系统文件,可以安装专门的单词列表类库(如wordlist),直接获取可迭代的英文单词集合,再执行检查统计操作。

内容的提问来源于stack exchange,提问作者FoxStamp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:02:14