2014-10-28 56 views
1

当我运行我的程序(anagram求解器)时,出现错误Unhashable type:list,那是当我把wordList变成一个元组,但我仍然得到错误。不可能的类型列表python

的WORD.TXT包含了一堆话,像这样 WORD.TXT

abruptly 
abruptness 
abs 
abscam 

这里是代码:

def main(): 
    lenWord = 4 
    wordList = readMatrix() 
    lengthWord(lenWord) 

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

def lengthWord(lenWord): 
    wordList = readMatrix() 
    for word in wordList: 
     if len(word) == lenWord: 
      sortWord = sorted(word) 
      setWord = set(word) 
      sortDict = ({sortWord : setWord}) 
    return sortDict 

main() 

回答

2

您只需打开列表回字符串(str

sortWord = ''.join(sorted(word)) 

其他合适的选择可以是tuplefrozenset

这下一行是一个错误,但 - 它只是一组字母

setWord = set(word) 

你想使价值包含实际的话一组。

例如。

sortWord = ''.join(sorted(word)) 
if sortWord not in sortDict: 
    sortDict[sortWord] = set() 
sortDict[sortWord].add(setWord) 
+0

@solofisher,'set('hello world')'给出set(['','e','d','h','l','o','r','w' ])'。你需要一套单词,例如。 'set(['world','hello'])' – 2014-10-28 08:23:25

0

sorted python中的inbuilt函数会返回你的列表。

你的代码

sortWord = sorted(word) 

行会给你sortWord的列表。您必须将其转换为python hashable对象。