У меня есть список имен переменных, например:
['foo', 'bar', 'baz']
(Первоначально я спросил, как я конвертирую список переменных. См. ниже ответ Грега Хьюглилла.)
Как мне преобразовать это в словарь, где ключи являются именами переменных (как строки), а значениями являются значения переменных?
{'foo': foo, 'bar': bar, 'baz': baz}
Теперь, когда я повторно задаю вопрос, я придумал:
d = {}
for name in list_of_variable_names:
d[name] = eval(name)
Можно ли улучшить это?
Обновить, отвечая на вопрос (в комментарии) о том, почему я хотел бы сделать это:
Я часто обнаруживаю, что я использую оператор% для строк со словарем имен и значений для интерполяции. Часто имена в строке - это просто имена локальных переменных. Итак (с ответом ниже) я могу сделать что-то вроде этого:
message = '''Name: %(name)s
ZIP: %(zip)s
Dear %(name)s,
...''' % dict((x, locals()[x]) for x in ['name', 'zip'])