为什么我会得到这个TypeError:'int'对象不可迭代

时间:2017-04-28 22:21:39

标签: python iterator

我的代码如下。任何人都可以帮助我理解为什么我会收到这个错误:
“TypeError:'int'对象不可迭代”关于我的“for i,crp”行?

from collections import defaultdict
import numpy

from gensim import corpora, models
dictionary = corpora.Dictionary(sws_removed)

corpus = [dictionary.doc2bow(text) for text in sws_removed]

document_topic = defaultdict(list)
for i, crp in enumerate(corpus):
    probs = ldamodel.get_document_topics(crp)
    max_topic = probs.argsort()[-1]
    document_topic[max_topic].append(i)

2 个答案:

答案 0 :(得分:0)

type(corpus)一个int?

它需要是一个可迭代的: https://docs.python.org/3/library/functions.html#enumerate

答案 1 :(得分:0)

我认为错误不在for语句中,而是在行

corpus = [dictionary.doc2bow(text) for text in sws_removed]

Sws_removed必须是unicode字符列表。如果它不是一个列表,而是一个int,它可能会给你这个错误。实际上,这段代码给出了这个错误 from collections import defaultdict import gensim from gensim import corpora lofs = 13 dictionary = corpora.Dictionary(lofs) corpus = [dictionary.doc2bow(text) for text in lofs] ldamodel = gensim.models.LdaModel(corpus=corpus) document_topic = defaultdict(list) for i, crp in enumerate(corpus): probs = ldamodel.get_document_topics(crp)

这就是堆栈跟踪(对帖子来说总是很有用)

  

追踪(最近一次通话):     文件“D:/python/stackoverflow/numpcorpora/numcorpora.py”,第9行,in       dictionary = corpora.Dictionary(lofs)     文件“C:\ Users \ Admin \ Anaconda3 \ lib \ site-packages \ gensim \ corpora \ dictionary.py”,第58行, init       self.add_documents(documents,prune_at = prune_at)     在add_documents中的文件“C:\ Users \ Admin \ Anaconda3 \ lib \ site-packages \ gensim \ corpora \ dictionary.py”,第111行       对于docno,枚举文档(文档):   TypeError:'int'对象不可迭代

现在将lofs = 13替换为lofs = ['list of words'.split()],它会正常运行,并提供以下输出:

[[(0, 1), (1, 1), (2, 1)]]
[(50, 0.75250000000000183)]

请检查你的sws_removed。它是一个int,而不是unicode字符列表,应该是它。