2017-04-03 88 views
0

我有一個列表,我想將其轉換爲字符串列表中的變量名稱的字符串列表。我想遍歷列表並將列表的長度提取到一個列表中,並將列表的名稱提取到另一個列表中。爲了說明這裏試圖用str(變量)來做到這一點,這顯然不起作用,因爲它轉換變量的值,而不是名稱。我試圖將名稱轉換將變量名稱轉換爲Python 3中的字符串

# Here are the initial lists 
common_nouns = ['noun', 'fact', 'banana'] 
verbs = ['run', 'jump'] 
adjectives = ['red', 'blue'] 
# Here is my list of lists: 
parts_of_speech = [common_nouns, verbs, adjectives] 
labels=[] 
data=[] 
for pos in parts_of_speech: 
    if pos != []: 
     labels.append(str(pos)) # This part doesn't work 
     data.append(len(pos)) 

結果:

labels = ["['noun', 'fact', 'banana']", "['run', 'jump']", "['red', 'blue']"] 

期望的結果:

labels = ['common_nouns', 'verbs', 'adjectives'] 

編輯:添加初始列表

+0

所以你要在其他地方定義'諸如此類? – patrick

+0

是的,我會編輯這個問題來補充 – jss367

+0

這似乎是一個徒勞的練習。一個簡單的方案。無論你在做什麼'parts_of_speech = [大聲,動詞,形容詞]'do'parts_of_speech = [「大聲笑」,「動詞」,「形容詞」]'。由於它靜態地知道你插入了什麼變量。 –

回答

1

這是頻繁的對面關於如何擁有「變量變量」的問題。但答案完全一樣:不要那樣做,使用字典。

將這些數據存儲爲單個字典,並將這些值作爲關鍵字,然後您可以使用.keys()方法爲您提供所需的結果。

0

我最終做了丹尼爾羅斯曼建議的字典。這裏是執行:

parts_of_speech = [common_nouns, verbs, adjectives] 
all_labels = ['common_nouns', 'verbs', 'adjectives'] 
pos_dict = dict(zip(all_labels, parts_of_speech)) 
labels=[] 
data=[] 
for pos, lst in pos_dict.items(): 
    if lst: 
     data.append(len(lst)) 
     labels.append(pos) 
+0

你可以在pos_dict.iteritems()中試試'pos,lst:',然後在後面的代碼中使用'lst'而不是'my_dict [pos]'。如果使用'if lst:'而不是'if lst!= []:'',它也被認爲是「Pythonic」。 –

+0

謝謝,我會編輯我的答案 – jss367