我有一个带有字符串值的变量。我想创建一个以值作为其名称/标识符的列表,然后将值附加到列表中。因此,假设变量s = "temp1",我想创建一个名为的列表temp1。显然,就我而言,我不知道s它将带来什么价值。
2 回答
暮色呼如
TA贡献1853条经验 获得超9个赞
别。创建动态变量很少是一个好主意,并且如果您尝试创建本地名称(在函数内部),则很困难,并且会极大地影响性能。
请改用字典:
lists = {}
lists[strs] = []
lists[strs].append(somevalue)
命名空间只是用于在其中查找名称的代码的默认词典。创建更多此类词典更加容易和整洁。
您仍然可以使用globals()函数访问全局(模块名称空间),该函数返回一个(可写的)字典。您可以使用来访问函数本地名称空间locals(),但是由于已优化了函数中的本地名称空间访问,因此对其进行写入通常无效。
在Python 2中,您可以通过exec在函数中使用语句来删除该优化。在Python 3中,您无法再关闭优化,因为该exec语句已被exec()function取代,这意味着编译器无法再确定地检测到您可能正在使用该本地命名空间进行写入。
米脂
TA贡献1836条经验 获得超3个赞
您可以使用globals():
>>> strs = "temp1"
>>> globals()[strs] = []
>>> temp1
[]
但是将dict用于此目的会更合适:
>>> dic = {strs:[]}
>>> dic["temp1"]
[]
添加回答
举报
0/150
提交
取消