2016-08-14 14 views
0

私はコマンドラインに何かを入力して対応するリストを表示するスクリプトを用意しています。例えば、私はそれを実行し、印刷ここexec()コードの置き換え

は不可欠ビットの場合:

list_of_strings = ['mexico', 'america', 'canada'] 
list_of_lists = [ [0,0,0,3], [4,9,3,6], [5,6,7] ] 


for name in range(len(list_of_strings)): 
     exec(list_of_strings[name] + ' = list_of_lists[name]') 

がこれを実行すると、「アメリカ」(引用符なし)を入力し、リターン[4,9,3,6] 。

私は

def my_zip(list_of_strings, list_of_lists): 
    for name in range(len(list_of_strings)): 
     return exec(list_of_strings[name] + ' = list_of_lists[name]') 

my_zip(list_of_strings, list_of_lists) 
それはもはや「アメリカ」(引用符なし)を作品

変数として認識されないように、関数にこのビットを変換したいとき私の問題がある。

私は辞書を使うべきだと思っていますが、どんな指針も大変ありがとうございます!

答えて

0

3つの主要な問題:

  1. execは何も返しません。

  2. forループ内にreturnがあります。 1回の反復でのみ実行されます。そのため、execが何も返さないという事実は、1回の反復の後すぐにNoneを返します。

  3. まず、execを使用しています。質問を編集して、実際に何をしようとしているのかを含める必要があります。おそらくより良い、より安全な方法があります。