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

时间:2013-03-11 21:03:56

标签: python function dictionary string-substitution variable-expansion

我遇到以下问题;

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

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 个答案:

答案 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()映射的更改不会反映在函数本地名称空间中。