2014-11-11 3 views
0

Мне нужно рассчитать частоту каждого слова, которое есть в текстовом файле, если оно совпадает со словом, которое есть в массиве, но я получаю эту ошибку TypeError: unhashable type: ' список»Вычислить частоту слов в python

import string 
from collections import Counter 
from array import * 
cnt=Counter() 
word =[ ] 
word_count = [ ] 
new_array =['CC','CD','DT','EX','FW','IN','JJ','JJR','JJS','LS','MD','NN','NNS','NNP','NNPS','PDT', 
         'POS','PRP','PRP','RB','RBR','RBS','RP','SYM','TO','UH','VB','VBD','VBZ','WDT','WP','WP','WRB'] 
file = open('output.txt', 'rU') 
for line in file: 
     new_line = line.replace("_"," ") 
     words = new_line.split() 
     word.append(words) 

[(w, word.count(w)) for w in set(word) if w in new_array] 
+0

Я не знаю, должно ли оно быть таким, но в вашем списке 'new_array' есть дубликаты записей ... Удалены повторяющиеся записи:' new_array = ['CC', 'CD', 'DT', ' 'EX', 'FW', 'В', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNS', 'ННП', 'NNPS', 'PDT », 'POS', 'PRP', 'RB', 'РКСБС', 'RBS', 'RP', 'СИМ', 'К', 'ММ', 'VB', 'ВБД', 'VBZ', 'WDT', 'WP', 'WRB'] ' – Renier

ответ

1

Когда вы делаете word.append(words), вы присоединяя список в списке, то составьте список списков. Поскольку список не хешируется, список списков не может быть преобразован в набор, и вы получили эту ошибку.

Я думаю, что вы намеревались сделать word += words.

+0

Спасибо. Теперь это работает :) –

Смежные вопросы