2016-08-14 2 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. У вас есть return внутри петли for. Он будет работать только для одной итерации. Из-за этого и того факта, что exec ничего не возвращает, он сразу же вернет None после одной итерации.

  3. Вы используете exec для начала. Вы должны изменить свой вопрос, чтобы включить то, что вы действительно пытаетесь сделать. Вероятно, это лучший и более безопасный способ сделать это.

Смежные вопросы