我有一个带有字符串值的变量。
我想创建一个列表,其值为其名称/标识符,然后将值附加到列表中。
因此,假设变量s = "temp1"
,我想创建一个名为temp1
的列表。
显然,就我而言,我不知道s
的价值是什么。
答案 0 :(得分:9)
别。创建动态变量很少是一个好主意,如果您尝试创建本地名称(在函数内部),则很难并且会极大地影响性能。
改为使用字典:
lists = {}
lists[strs] = []
lists[strs].append(somevalue)
命名空间只是代码查找名称的默认词典。创建更多此类词典会更容易,更清晰。
您仍然可以使用globals()
函数访问全局(模块命名空间),该函数返回一个(可写)字典。您可以使用locals()
访问函数本地命名空间,但是写入此函数通常没有作为本地命名空间访问功能的效果已经过优化。
在Python 2中,您可以通过在函数中使用exec
语句来删除该优化。在Python 3中,您不能再关闭优化,因为exec
语句已被exec()
function替换,这意味着编译器无法再确定您是否可能正在写入本地名称空间用它。
答案 1 :(得分:1)
您可以使用globals()
:
>>> strs = "temp1"
>>> globals()[strs] = []
>>> temp1
[]
但是为此目的使用dict更为合适:
>>> dic = {strs:[]}
>>> dic["temp1"]
[]