Dictionary 如何使用字符串访问Python字典名称?

Dictionary 如何使用字符串访问Python字典名称?,dictionary,python-3.8,Dictionary,Python 3.8,我有一个字符串“dict_1”,还有一个字典名为dict_1 x = "dict_1" dict_1 = {"a": "b", "c": "d"} 那么,我可以像x['a']那样访问dict_1吗 我找到了一个,但在这个问题中,OP希望使用字符串创建变量,而不是使用字符串访问变量(字典) 我真的需要一些帮助。我正在使用Python 3.8和Windows 谢谢 在我看来,这里有两个基本选项 最明

我有一个字符串
“dict_1”
,还有一个字典名为
dict_1

x = "dict_1"
dict_1 = {"a": "b", "c": "d"}
那么,我可以像
x['a']
那样访问
dict_1

我找到了一个,但在这个问题中,OP希望使用字符串创建变量,而不是使用字符串访问变量(字典)

我真的需要一些帮助。我正在使用Python 3.8和Windows


谢谢

在我看来,这里有两个基本选项

最明显的方法是使用将字符串
x
的值转换为可用的Python对象—在本例中是dictionary
dict_1

x = "dict_1"
dict_1 = {"a": "b", "c": "d"}
请注意,
eval
将字符串作为Python代码执行。如果字符串来自不受信任的源,那么这样做是非常危险的。您应该谨慎使用,并对任何输入应用适当的消毒

x = "dict_1"
dict_1 = {"a": "b", "c": "d"}

print(type(eval(x)))
# Prints <class 'dict'>

print(eval(x)['a'])
# Prints "b"
理论上,使用
locals()
进行作业会更安全,因为使用
eval
,您可能会无意中执行任意代码

同样,如果来自不受信任的源,您应该执行一些基本的健全性检查,例如,检查变量是否在范围内,是否是字典:

if x in locals() and type(locals()[x]) == dict:
    print(locals()[x]['a'])
    # Prints "b"

你真棒!非常感谢。