Python - динамически созданный словарь не может быть возвращен или добавлен в другой словарь

-6

У меня есть функция, которая динамически создает некоторое количество словарей. То, что я пытаюсь сделать, это добавить каждый из этих словарей в другой словарь, а затем вернуть этот словарь словарей.

Словари все созданы просто отлично. Я прошел процесс и проверил переменные, все выглядит хорошо.
enter image description here

Но когда я пытаюсь добавить их в другой словарь (в качестве значения), все, что добавляется, это None. enter image description here

Я думаю, что это может быть связано с глобальными и локальными переменными, но я не уверен.

Это код, который создает словари внутри функции

def build_DoD(block, page, PROJECT, master_string, logging):     
# other code up here

exec("{} = {{}}".format(base))
exec("{0}['section'] = '{1}'".format(base, section))
exec("{}['question_number'] = '{}'".format(base, question_number))
exec("{}['sub_question_label'] = '{}'".format(base, sub_question_label))
exec("{}['sub_question_text'] = '{}'".format(base, sub_question_text))
exec("{}['display_function'] = '{}'".format(base, display_function))
exec("{}['has_other'] = '{}'".format(base, has_other))
exec("{}['has_explain'] = '{}'".format(base, has_explain))
exec("{}['has_text_year'] = '{}'".format(base, has_text_year))
exec("{}['randomize_response'] = '{}'".format(base, randomize_response))
exec("{}['response_table'] = '{}'".format(base, resp_table))

# here is where I try to add the dynamically created dict to a larger dict.
dict_of_dicts[str(base)] = exec("{}".format(base))

спросил(а) 2019-05-03T17:26:00+03:00 1 год, 6 месяцев назад
0
100

ОК, не делай этого. Когда-либо.

Не используйте exec вне действительно особых случаев. Но чтобы ответить на вопрос, даже если я не думаю, что вы должны использовать его: проблема, с которой вы столкнулись, заключается в том, что exec ничего не возвращает. Он просто выполняет код, он не оценивает его. Для этого есть функция eval. Замените exec в последней строке на eval. Однако я полностью согласен с @RafaelC. Это проблема XY

ответил(а) 2019-05-03T17:38:00+03:00 1 год, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема