为什么我得到一个不可用的类型错误

时间:2015-04-27 01:52:14

标签: python input split store words

我正在尝试从两个输入文件中找到所有匹配的单词,但我不断收到“TypeError:unhashable type:'list'”。我不知道为什么。有人可以让我知道我做错了什么以及如何解决它

#!/usr/bin/python3

#First file
file = raw_input("Please enter the name of the first file: ")

store = open(file)

new = store.read()

#Second file
file2 = raw_input("Please enter the name of the second file: ")

store2 = open(file2)

new = store2.read()

words = set(line.strip() for line in new)

for line in new:
    word2 = line.split()
    if word2 in words:
            print words

1 个答案:

答案 0 :(得分:2)

您收到TypeError: unhashable type: 'list'异常,因为word2 = line.split()正在返回列表对象。 而您正在尝试在words设置对象中搜索列表(不可用对象)。

例如:

>>> word2 = 'abc'
>>>
>>> word2.split() in set(['abc', 'def'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

split不是正确的功能。您应该使用strip功能删除whitespaces

>>> word2.strip() in set(['abc', 'def'])
True