是否可以从列表中生成变量?

时间:2010-10-05 22:18:43

标签: python

是否可以从列表中动态生成变量?

在我的程序中,我使用以下指令:

for i in re.findall(r"...(?=-)", str(vr_ctrs.getNodeNames())):
    tmp_obj = vr_ctrs.getChild(i+"-GEODE")

    TMP.append([tmp_obj.getPosition(viz.ABS_GLOBAL)[0],
                tmp_obj.getPosition(viz.ABS_GLOBAL)[1], 
                tmp_obj.getPosition(viz.ABS_GLOBAL)[2]])

在TMP上构建了一个列表。是否可以为我追加到TMP的每个元素生成一个新变量?

由于

2 个答案:

答案 0 :(得分:4)

我建议你不要创建变量,而是在dict中捕获这些条目,使用你用作dict键的变量名的东西。然后,您可以通过访问dict.keys()轻松浏览解析的数据,并且您不必从其他本地或全局变量中挑选出变量。此外,如果您碰巧解析了与Python关键字意外碰撞的内容(例如'for'),那么将其用作dict键仍然有效,而将其用作变量或属性名称则不起作用

答案 1 :(得分:1)

全局变量位于字典中,您可以通过调用 globals()函数来获取。

globals()["foo"] = 17
foo  # => 17

但您应该重构代码以使用对象,然后使用 setattr()