我有一个变量名列表,如下所示:
['foo', 'bar', 'baz']
(我最初问我如何转换变量列表。请参阅下面的 Greg Hewgill 的回答。)
如何将其转换为字典,其中键是变量名(作为字符串),值是变量的值?
{'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'])