[英]How to make a sublists for each strings inside a list in python?
例如,我有此列表:
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]
我找到了! 多虧先生。 Meow
,誰給了我靈感。
upuplist1 = []
for i in newlist1:
upuplist1.append([i])
print upuplist1
這是我期望的輸出:
[[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
,您需要在列表組合中的val
中添加方括號[]
以將每個string
放入list
,例如:
newlist1 = [[val] for sublist in syn1 for val in sublist]
只需使用列表理解並將每個項目包裝在列表中:
>>> lst = [[el] for el in newlist1]
[['organization'],
['organisation'],
['arrangement'],
['system'],
['administration'],
['governance'],
['governing body'],
['establishment'],
['brass'],
['constitution'],
['formation'],
['community'],
['community of interests'],
['residential district'],
['residential area'],
['biotic community']]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.