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