Python:使用for循环中当前检查的项动态创建变量

时间:2014-11-19 09:12:12

标签: python list variables

如果有任何方法可以从for循环中当前检查项目的名称创建新变量,那么我就是这样做的:

list = ["a", "b", "c"]
for item in list:
    item_new = 1

print a_new 
print b_new
print c_new

我想要输出的是:

1
1
1

编辑: 哎呀,好的,请注意:P

知道dict在这种情况下会起作用,只是想检查上面的方法是否可行。显然不是!

3 个答案:

答案 0 :(得分:4)

你不应该对变量这样做。你正在寻找一本字典:

list = ["a", "b", "c"]
variables = {}
for item in list:
    variables[item] = 1

print variables["a"]
print variables["b"]
print variables["c"]

答案 1 :(得分:2)

locals()函数返回对dict的引用,您可以在其中检查局部变量,每个键将本地变量名称表示为字符串:

>>> locals()
{'a': 2, 'b': 9, '__builtins__': <module '__builtin__' (built-in)>, '__package__': None, '__name__': '__main__', '__doc__': None}
>>> var = "Some text"
>>> locals()
{'var': 'Some text', 'a': 2, 'b': 9, '__builtins__': <module '__builtin__' (built-in)>, '__package__': None, '__name__': '__main__', '__doc__': None}

还有globals()函数,您不仅可以使用它来检查全局变量,还可以动态创建新的全局变量:

>>> globals()['ZZ'] = 123
>>> ZZ
123

但是,不要这样做。这个程序是不可维护的。使用普通dict使用您的代码创建自定义元素。这个程序更具可读性和可维护性:

list = ["a", "b", "c"]
d = {}
for item in list:
    d[item] = 1

print d['a'] 
print d['b']
print d['c']

答案 2 :(得分:1)

而不是创建新变量,字典似乎是一种更好的方法。

此外,最好不要使用变量名list,因为这已经是函数的名称。

L = ["a", "b", "c"]
d = {}
for item in L:
    d["{}_new".format(item)] = 1

print d["a_new"]
print d["b_new"]
print d["c_new"]