2014-10-28 53 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對象。