Trabajando en una aplicación de recuento de apariciones de palabras en un entorno Python 3.2/Windows.Recuento de palabras Python y rango
¿Alguien puede ayudarme a decirme por qué lo siguiente no está funcionando?
from string import punctuation
from operator import itemgetter
N = 100
words = {}
words_gen = (word.strip(punctuation).lower() for line in open("poi_run.txt")
for word in line.split())
for word in words_gen:
words[word] = words.get(word, 0) + 1
top_words = (words.iteritems(), key=itemgetter(1), reverse=True)[:N]
for word, frequency in top_words:
print ("%s %d") % (word, frequency)
El rastreo hacia atrás de error es:
Message File Name Line Position
Traceback
<module> C:\Users\will\Desktop\word_count.py 13
AttributeError: 'dict' object has no attribute 'iteritems'
Gracias
N.B.
código Totalmente de trabajo:
from string import punctuation
from operator import itemgetter
N = 100
words = {}
words_gen = (word.strip(punctuation).lower() for line in open("poi_run.txt")
for word in line.split())
for word in words_gen:
words[word] = words.get(word, 0) + 1
top_words = sorted(words.items(), key=itemgetter(1), reverse=True)[:N]
for word, frequency in top_words:
print ("%s %d" % (word, frequency))
Gracias de nuevo chicos
'top_words = ((words.iteritems), clave = itemgetter (1), invierta = true) [: N] '- ¿No te está faltando algún nombre de función aquí? – eumiro
Es posible que desee utilizar un 'defaultdict':' words = defaultdict (int); para palabras en word_gen: words [word] + = 1'. –
@TimPietzcker: En realidad, 'Counter' del mismo módulo es mejor aquí. Perfecto, incluso ¿Por qué no lo pensé antes? Gracias por la idea –