kst*_*tis 0 python dictionary function variable-expansion string-substitution
我面临以下问题;
我的脚本里面的某个地方我定义了一个函数
def lookup(type, value):
doctors = {'doctor1':"Smith", 'doctor2':"Rogers"}
supervisors = {'super1': "Steve", 'super2': "Annie"}
print type['value']
Run Code Online (Sandbox Code Playgroud)
我从我的脚本末尾调用这个函数,如下所示:
myDoc = 'super1'
lookup('supervisors', myDoc)
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
TypeError: string indices must be integers, not str
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,我该如何解决?
谢谢大家!
不要尝试从字符串中查找局部变量.只需将您的医生和主管存放在嵌套字典中:
def lookup(type, value):
people = {
'doctors': {'doctor1': "Smith", 'doctor2': "Rogers"},
'supervisors': {'super1': "Steve", 'super2': "Annie"}
}
print people[type][value]
Run Code Online (Sandbox Code Playgroud)
这导致:
>>> myDoc = 'super1'
>>> lookup('supervisors', myDoc)
Steve
Run Code Online (Sandbox Code Playgroud)
在极少数情况下,您确实需要动态引用局部变量,您可以使用该locals()函数执行此操作,它返回将本地名称映射到值的字典.请注意,在函数内,对locals()映射的更改不会反映在函数本地名称空间中.