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对象—在本例中是dictionarydict_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"
你真棒!非常感谢。