0

我面临以下问题;

在我的脚本中的某个地方,我定义了一个函数

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

为什么会发生这种情况,我该如何解决?

谢谢大家!

4

1 回答 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()function来做到这一点,它返回一个将局部名称映射到值的字典。请注意,在函数中,对locals()映射的更改不会反映在函数本地命名空间中。

于 2013-03-11T21:06:42.100 回答