【问题标题】:Why do i get this TypeError: 'int' object is not iterable为什么我会得到这个 TypeError: 'int' object is not iterable
【发布时间】:2017-04-29 07:17:32
【问题描述】:

我的代码如下。谁能帮我理解为什么会出现此错误:
关于我的“for i, crp”行,“TypeError: 'int' object is not iterable”?

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)

【问题讨论】:

  • 什么是语料库?我没有看到它在任何地方定义。
  • 欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现问题。
  • corpus 几乎肯定是int 类型,这就是它所说的不能被迭代。

标签: python iterator


【解决方案1】:

我不认为错误出在 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)

这是堆栈跟踪(发布时总是有用的)

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

现在将lofs = 13 替换为lofs = ['list of words'.split()],它会运行良好,输出如下:

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

所以请检查您的 sws_removed。它是一个 int,而不是应有的 unicode 字符列表。

【讨论】:

    【解决方案2】:

    type(corpus) 是 int 吗?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 2020-03-05
      • 1970-01-01
      相关资源
      最近更新 更多