【问题标题】:'NoneType' object is not iterable while using itertools.chain.from_iterable'NoneType' 对象在使用 itertools.chain.from_iterable 时不可迭代
【发布时间】:2016-11-20 05:14:25
【问题描述】:

我在 spark 中使用以下行生成字符串列表

l = text.map(lambda x: tokenize(x[0])).collect()

l 的输出如下所示(长列表的子集):

[['@always_nidhi'], ['@always_nidhi', '@OnlyDancers', '@IcelandNatural'], ['@always_nidhi', '@OnlyDancers', '@IcelandNatural']]

这是一个字符串值列表。我想要一组唯一的名称,因此我的第一步是使用以下行合并它。 (稍后我将使用 set 来获取唯一值)

list(itertools.chain.from_iterable(l))

但我得到了这个错误

'NoneType' 对象不可迭代

有人可以帮忙吗。

【问题讨论】:

  • 你能发布更多代码吗?该错误表明您的列表l 等同于None。让我相信你的来源中还有其他事情发生。
  • Catch the excetion 并打印 l - 里面有什么吗?
  • 从答案中我得到了解决方案,即我之前的代码有一些错误导致了这个错误。我现在正在调试那部分

标签: python apache-spark-sql


【解决方案1】:

无法复制您的错误,以下适用于 Python 2.7。

>>> print set(itertools.chain.from_iterable(l))
set(['@OnlyDancers', '@always_nidhi', '@IcelandNatural'])

但是,您可以使用以下生成器。它在功能上等同于chain()

>>> print set(inner for sub_list in l for inner in sub_list)
set(['@OnlyDancers', '@always_nidhi', '@IcelandNatural'])

【讨论】:

  • 从答案中我得到了解决方案,即我之前的代码有一些错误导致了这个错误。我现在正在调试那部分
猜你喜欢
  • 2016-02-08
  • 2020-05-06
  • 1970-01-01
  • 2022-12-10
  • 2013-12-01
  • 2012-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多