0

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.

4

2 回答 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 回答