2013-06-18 58 views
0

我有一个变量,其中包含一个字符串值。 我想创建一个列表,其中包含值作为其名称/标识符,然后将值附加到列表中。 因此,假设变量为s = "temp1",我想创建一个名为temp1的列表。 显然,在我的情况下,我不知道s的值是多少。基于python中变量中存储的值创建列表

回答

9

不要。创建动态变量通常不是一个好主意,如果您尝试创建本地名称(在函数内部),则很难并且会极大地影响性能。

使用字典来代替:

lists = {} 
lists[strs] = [] 
lists[strs].append(somevalue) 

命名空间是代码查找名字在短短的默认字典这是一个极大的方便,更清洁,创造更多这样的字典。

你仍然可以用globals()函数返回一个(可写)字典访问全局(模块命名空间。你可以用locals()访问函数的局部命名空间,但是写这通常有没有影响,因为函数中的局部命名空间访问得到优化。

在Python 2可以通过在函数使用exec语句中删除该最优化。在Python 3中,可以不再关闭优化为exec语句已被替换为exec() function,这意味着编译器不能再肯定地检测到你有可能用它写入本地命名空间。

+0

感谢您的回应和见解。 – picstand

1

您可以使用globals()

>>> strs = "temp1" 
>>> globals()[strs] = [] 
>>> temp1 
[] 

但是利用这样的目的的字典会更合适:

>>> dic = {strs:[]} 
>>> dic["temp1"] 
[] 
相关问题