首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迭代获取TypeError的Python:'NoneType‘对象不可迭代

迭代获取TypeError的Python:'NoneType‘对象不可迭代
EN

Stack Overflow用户
提问于 2021-01-20 18:25:23
回答 4查看 505关注 0票数 0

使用nltk根据关键字的输入列表生成同义词列表。

当nltk没有同义词时,我得到了"TypeError:'NoneType‘对象不可迭代“(即,当"None”返回时)。

代码语言:javascript
复制
from nltk.corpus import stopwords
from PyDictionary import PyDictionary
dictionary=PyDictionary()


inputWords = ['word1','word2','word3','word4','word5','word6','word7','word8']

synonyms = list(dictionary.synonym(i) for i in inputWords 

同义词的当前输出:

代码语言:javascript
复制
[['syn1','syn2','syn3'],['syn4'],None,['syn5'],None,['syn6','syn7'],None,['syn8'],None]]

对同义词的期望输出:

代码语言:javascript
复制
['syn1','syn2','syn3','syn4','syn5','syn6','syn7','syn8']

我试过:

代码语言:javascript
复制
flat_list = [item for sublist in synonyms for item in sublist]

产出:

代码语言:javascript
复制
TypeError: 'NoneType' object is not iterable

我应该写些什么来返回一个干净列表中的同义词呢?我更喜欢使用列表理解。任何帮助都很感激。我是条蟒蛇,找不到确切的答案。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-01-20 18:32:46

这里有一条更多的琵琶内衬:

代码语言:javascript
复制
flat_list = [i for sublist in synonyms if sublist is not None for i in sublist]
flat_list
>>>
['syn1', 'syn2', 'syn3', 'syn4', 'syn5', 'syn6', 'syn7', 'syn8']
票数 1
EN

Stack Overflow用户

发布于 2021-01-20 18:28:42

您可以删除None值并使用迭代工具-

代码语言:javascript
复制
import itertools
list(itertools.chain(*[x for x in synonyms if x]))
票数 2
EN

Stack Overflow用户

发布于 2021-01-20 18:30:18

尝试:

代码语言:javascript
复制
flat_list = []

for i in range(len(synonyms):
   if isinstance(synonyms, list):
      flat_list += i
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65815430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档