如何在Python中使用字符串值作为变量名?

Hal*_*ius 1 python string variables python-2.7

假设我有以下列表:

candy = ['a','b','c']
fruit = ['d','e','f']
snack = ['g','h','i']
Run Code Online (Sandbox Code Playgroud)

和一个字符串

name = 'fruit'
Run Code Online (Sandbox Code Playgroud)

我想使用字符串name来访问列表及其内容.在这种情况下应该是fruit.我将name用于迭代列表.如:

for x in name:
    print x
Run Code Online (Sandbox Code Playgroud)

Sна*_*ƒаӽ 10

您可以这样使用globals():

for e in globals()[name]:
    print(e)
Run Code Online (Sandbox Code Playgroud)

输出:

d
e
f
Run Code Online (Sandbox Code Playgroud)

如果您的变量碰巧在某个本地范围内,您可以使用 locals()

或者你可以创建你的字典并访问:

d = {'candy': candy, 'fruit': fruit, 'snack': snack}
name = 'fruit'

for e in d[name]:
    print(e)
Run Code Online (Sandbox Code Playgroud)

  • 说真的,使用它代替`eval`,特别是如果传入的值将来自用户 - 这可以让用户有效地运行所有**巨大的**安全风险.虽然使用`dict`会更好. (3认同)

Abd*_*tir 6

我不明白你到底想要达到的目的是什么,但这可以通过使用来完成eval.我建议不要使用eval.如果你告诉我们你最终想要达到的目标,那会更好.

>>> candy = ['a','b','c']
>>> fruit = ['d','e','f']
>>> snack = ['g','h','i']
>>> name = 'fruit'
>>> eval(name)
['d', 'e', 'f']  
Run Code Online (Sandbox Code Playgroud)

编辑

看看Sнаđошƒаӽ的另一个答案.这将是更好的方式去.eval有安全风险,我不建议使用它.