У меня есть список имен переменных, например:
['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'])