Python将字符串更改为变量名
所以我有一个字符串列表 MyList=['ID_0','ID_1','ID_2',....] 从中我使用了一个 exec 函数来创建一个以元素作为名称的空列表,即每个我都有空列表ID_0=[] 等等。我现在想创建一个 for 循环,在其中按名称获取每个列表并将元素附加到它,例如
for i in range(len(MyList)):
*magic*
ID_0.append(i)
在每个循环中,它用于下一个列表,即 ID_1,ID_2.... 等等
我想获取 MyList 中的每个字符串并将其更改为变量名称。就像取“ID_0”并将其更改为说 ID_0(这是之前定义的空列表),然后创建一个列表 BigList=[ID_0,ID_1,ID_2,.....] 这样我就可以从BgList 在我的 for 循环中,但我不知道如何
回答
比使用更安全的方法exec可能是构造一个字典,这样您就可以安全地通过每个列表的 ID 来引用它:
MyList=['ID_0','ID_1','ID_2']
lists = {}
for i, list_id in enumerate(MyList):
lists[list_id] = [i]
请注意, usingenumerate比range(len(MyList)). 它返回 (index, item) 的元组。
或者,您也可以使用defaultdict,它会在第一次引用时在字典中构造一个新项目:
from collections import defaultdict
lists = defaultdict(list)
for i, list_id in enumerate(MyList):
lists[list_id].append(i)