簡體   English   中英

如何在python中的列表中為每個字符串創建子列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM