I have a variable with a string value in it.
I want to create a list with the value as its name/identifier, then append values to the list.
So assuming variable s = "temp1"
, I want to create a list called temp1
.
Obviously, in my case, I would not know what the value of s
will be.
问问题
2120 次
2 回答
9
不。创建动态变量很少是一个好主意,如果您尝试创建本地名称(在函数内部),则会很困难并且会极大地影响性能。
改用字典:
lists = {}
lists[strs] = []
lists[strs].append(somevalue)
命名空间只是代码在其中查找名称的默认字典。创建更多这样的字典要容易得多,也更简洁。
您仍然可以使用该函数访问全局 (module 命名空间,该globals()
函数返回一个(可写)字典。您可以使用 访问函数本地命名空间locals()
,但写入 this 通常没有效果,因为函数中的本地命名空间访问已被优化。
在 Python 2 中,您可以通过在函数中使用exec
语句来删除该优化。在 Python 3 中,您不能再关闭优化,因为该exec
语句已被exec()
function替换,这意味着编译器无法再确定您正在使用它写入本地命名空间。
于 2013-06-18T11:24:31.010 回答
1
您可以使用globals()
:
>>> strs = "temp1"
>>> globals()[strs] = []
>>> temp1
[]
但是为此目的使用 dict 会更合适:
>>> dic = {strs:[]}
>>> dic["temp1"]
[]
于 2013-06-18T11:22:14.463 回答