2017-04-03 22 views
0

私は、文字列が変数の名前である文字列のリストに変換したいリストのリストを持っています。私はリストをループし、リストの長さを1つのリストに抽出し、リストの名前を別のリストに抽出したいと思います。これを説明するために、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'] 

EDIT:追加されました初期リスト

+0

他の場所で 'common_nouns'などを定義していますか? – patrick

+0

はい、それを追加する質問を編集します – jss367

+0

これは無益な行為のようです。 1つの簡単な解決策。 part_of_speech = [common_nouns、verb、形容词] 'parts_of_speech = [" common_nouns "、" verbs "、" adjectives "]'を実行しているときはいつでも。それは静的にどの変数を挿入しているか知っているからです。 –

答えて

1

これは頻繁に反対でありますどのように "変数変数"を持っているかに関する質問。しかし、答えはまったく同じです:それをしないでください。

これらの値をキーとして単一のdictとしてこのデータを格納してから、.keys()メソッドを使用して必要な結果を得ることができます。

0

ダニエル・ローズマン(Daniel Roseman)が提案したように、私は辞書をやりました。実装は次のとおりです:

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を試した後、後のコードで' my_dict [pos] 'の代わりに' lst'を使ってみてください。 'if lst!= []:'の代わりに 'if lst:'を使うのも "Pythonic"と考えられます。 –

+0

ありがとう、私は私の答えを編集します – jss367

関連する問題