2017-07-22 18 views
0

例如,我有這樣的名單:如何使一個子列表在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'被列表內sublisted。然後我降低列表級別:

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被sublisted對方的同義詞集。我期望的輸出會是這樣:

[[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'

如何對將每個synsets的字符串關聯到一個子列表?

回答

2

像這樣的事情?

uplist1 = [] 
for i in syn1: 
    uplist1.append([i]) 

編輯:

而且列表理解相當於:

uplist1 = [[i] for i in syn1] 
+0

對不起,先生,不是這樣的。'[''組織','組織','安排','系統','管理','治理','管理機構','建立',''''',' u'constitution',u'formation']],[[u'community',u'community of interests',u'residential district',u'residential area',u'biotic community']]]''it爲synset組附加一個列表,但不是爲每個字符串添加 – sang

0

我找到了!感謝先生。 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']] 
+0

我將它實現爲列表'newlist1' – sang

0

創建newlist1當你需要[]加括號val在列表中,理解到把每stringlist,例如:

newlist1 = [[val] for sublist in syn1 for val in sublist] 
+0

@ChristianDean爲什麼在創建'newlist1'時可以做到這一點? –

+0

啊,我很抱歉。我沒有意識到你也是_flattening_'syn1',而不是迭代它。 –

0

只需使用列表理解並以列表包每個項目:

>>> 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']] 
相關問題