在Python中使用字典进行变量扩展

0 投票
1 回答
1125 浏览
提问于 2025-04-17 18:44

我遇到了以下问题:

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

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()返回的字典进行的修改,并不会反映到函数的局部命名空间中。

撰写回答