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

新手上路,请多包涵

假设我有如下列表:

 candy = ['a','b','c']
fruit = ['d','e','f']
snack = ['g','h','i']

和一个字符串

name = 'fruit'

我想使用字符串 name 来访问列表及其内容。在这种情况下,它应该是 fruit 。我将使用 name 来迭代列表。作为:

 for x in name:
    print x

原文由 Muhammad Yaseen Khan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 959
2 个回答

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

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

编辑

看看 Sнаđошƒаӽ 的另一个答案。这将是更好的方式去。 eval 存在安全风险,我不推荐使用它。

原文由 Abdul Fatir 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以像这样使用 globals()

 for e in globals()[name]:
    print(e)

输出:

 d
e
f

如果您的变量恰好在某个局部范围内,您可以使用 locals()

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

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

for e in d[name]:
    print(e)

原文由 Sнаđошƒаӽ 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题