在Python中使用字典进行变量扩展
我遇到了以下问题:
在我的脚本中某个地方,我定义了一个函数:
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
这是为什么呢?我该怎么解决这个问题?
谢谢大家的帮助!
1 个回答
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()
函数。这个函数会返回一个字典,把局部变量的名字和它们的值对应起来。不过要注意,在函数内部对locals()
返回的字典进行的修改,并不会反映到函数的局部命名空间中。