使用python字典工作

2024-06-28 11:33:00 发布

您现在位置:Python中文网/ 问答频道 /正文

当我运行我的程序(anagram solver)时,我得到error unhable type:list。我该怎么说?我不能做set([word]),因为那样也会产生同样的错误。你知道吗

那个word.txt文件包含一行新词。你知道吗

代码如下:

def main():
    wordList = readMatrix()
    print(lengthWord())

def readMatrix():
    wordList = []
    strFile = open("words.txt", "r")
    lines = strFile.readlines()
    for line in lines:
        word = sorted(line.rstrip().lower())
        wordList.append(word)
    return tuple(wordList)

def lengthWord():
    lenWord = 7
    sortDict = {}
    wordList = readMatrix()
    for word in wordList:
        if len(word) == lenWord:
            sortWord = ''.join(sorted(word))
            setWord = set([word])
            if sortWord not in sortDict:
                sortDict[sortWord] = set()
            sortDict[sortWord].add(setWord)
    return sortDict


main()

Tags: intxtformaindeflinewordlines
3条回答

您希望从规范化的表单(排序的单词)映射到实际标记的列表。你知道吗

使用tuple而不是列表:

setWord = word,  # or setWord = tuple(word)

另一种可能性是,如果希望在集合中包含一个集合,可以使用^{}

setWord = frozenset([word])

The documentation解释:

All of Python’s immutable built-in objects are hashable [...]

tuplefrozenset文档中可以看出,它们是不可变的类型。你知道吗

似乎要将排序的单词映射到它们的原始单词集:

sortDict = {
  'dgo': set('dog', 'god'),
  ...
}

所以不需要setWord;只要做:

sortDict[sortWord].add(word)

相关问题 更多 >