按变量名访问列表元素

时间:2015-01-14 00:34:30

标签: python-3.x

如何使用列表名称访问列表元素?

我想允许用户编辑代码以确定要输入到函数中的单个变量。例如:

blah = [1,2]
blah2 = 5

toBeChanged = "blah2"

def foo():  
     print(blah)

def changeVariable():
    globals()[toBeChanged] += 1

for time in range(5):  
    changeVariable()  
    simulate

这适用于blah2,因为它是一个简单的变量,但它不适用于blah [0],因为它是列表的一部分。我也尝试将我的变量放入字典中,如其他答案所示,但我仍然无法通过简单的字符串更改列表元素。

有没有办法让我失踪?谢谢!

1 个答案:

答案 0 :(得分:2)

使用字典存储您希望用户更改的变量,而不是使用globals()并直接更改它会更好,然后操纵它:

my_variables = {
    'blah': [1,2]
    'blah2': 5
}

toBeChanged = "blah2"

def foo():  
     print(my_variables['blah'])

def changeVariable():
    my_variables[toBeChanged] = my_variables.get(toBeChanged,0) + 1

for time in range(5):  
    changeVariable()  

这样做的另一个好处是,如果用户输入的数据不存在,则选择默认值,并且不会覆盖对将来执行可能很重要的任何变量。