【问题标题】:Unhashable type list python不可散列的类型列表python
【发布时间】:2014-10-28 11:42:31
【问题描述】:

当我运行我的程序(字谜求解器)时,我得到错误 Unhashable type: list,那是我将 wordList 变成一个元组但我仍然得到错误。

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()

【问题讨论】:

    标签: python


    【解决方案1】:

    您可以将列表转回字符串 (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)
    

    【讨论】:

    • @solofisher,set('hello world') 给了set([' ', 'e', 'd', 'h', 'l', 'o', 'r', 'w'])。你需要一组单词,例如。 set(['world', 'hello'])
    【解决方案2】:

    sortedpython 中的内置函数将返回您的列表。

    你的代码行

    sortWord = sorted(word)
    

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

    【讨论】:

      猜你喜欢
      • 2018-12-26
      • 2022-01-11
      • 2015-07-05
      • 2017-07-11
      • 2013-03-30
      • 2020-03-28
      • 1970-01-01
      • 2014-02-16
      • 2019-01-07
      相关资源
      最近更新 更多