例如,我有以下列表:
word1 = ['organization', 'community']
我有一个功能,可以从列表中的单词中获取同义词:
from nltk.corpus import wordnet as wn
def getSynonyms(word1):
synonymList1 = []
for data1 in word1:
wordnetSynset1 = wn.synsets(data1)
tempList1=[]
for synset1 in wordnetSynset1:
synLemmas = synset1.lemma_names()
for i in xrange(len(synLemmas)):
word = synLemmas[i].replace('_',' ')
if word not in tempList1:
tempList1.append(word)
synonymList1.append(tempList1)
return synonymList1
syn1 = getSynonyms(word1)
print syn1
这是输出:
[[u'organization', u'organisation', u'arrangement', u'system', u'administration', u'governance', u'governing body', u'establishment', u'brass', u'constitution', u'formation'], [u'community', u'community of interests', u'residential district', u'residential area', u'biotic community']]
^上面的输出显示了'organization'和的每个同义词集都'community'在列表内列出。然后我降低list的级别:
newlist1 = [val for sublist in syn1 for val in sublist]
这是输出:
[u'organization', u'organisation', u'arrangement', u'system', u'administration', u'governance', u'governing body', u'establishment', u'brass', u'constitution', u'formation', u'community', u'community of interests', u'residential district', u'residential area', u'biotic community']
^现在所有同义词集保持相同的字符串,没有子列表。而我现在想要做的是使所有的同义词newlist1集互相列出。我希望输出将是这样的:
[[u'organization'], [u'organisation'], [u'arrangement'], [u'system'], [u'administration'], [u'governance'], [u'governing body'], [u'establishment'], [u'brass'], [u'constitution'], [u'formation'], [u'community'], [u'community of interests'], [u'residential district'], [u'residential area'], [u'biotic community']]
我正在尝试此代码:
uplist1 = [[] for x in syn1]
uplist1.extend(syn1)
print uplist1
但是结果不是我所期望的:
[[], [], [u'organization', u'organisation', u'arrangement', u'system', u'administration', u'governance', u'governing body', u'establishment', u'brass', u'constitution', u'formation'], [u'community', u'community of interests', u'residential district', u'residential area', u'biotic community']]
它显示了两个空列表和两个同义集的两个列表'organization'和'community'
如何使每个同义词集的子列表?
解决方案
像这样吗
uplist1 = []
for i in syn1:
uplist1.append([i])
编辑:
与列表理解等效:
uplist1 = [[i] for i in syn1]