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

kst*_*tis 0 python dictionary function variable-expansion string-substitution

我面临以下问题;

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

def lookup(type, value): 
    doctors = {'doctor1':"Smith", 'doctor2':"Rogers"}
    supervisors = {'super1': "Steve", 'super2': "Annie"}
    print type['value']
Run Code Online (Sandbox Code Playgroud)

我从我的脚本末尾调用这个函数,如下所示:

myDoc = 'super1'
lookup('supervisors', myDoc)
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

TypeError: string indices must be integers, not str
Run Code Online (Sandbox Code Playgroud)

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

谢谢大家!

Mar*_*ers 5

不要尝试从字符串中查找局部变量.只需将您的医生和主管存放在嵌套字典中:

def lookup(type, value): 
    people = {
        'doctors': {'doctor1': "Smith", 'doctor2': "Rogers"},
        'supervisors': {'super1': "Steve", 'super2': "Annie"}
    }
    print people[type][value]
Run Code Online (Sandbox Code Playgroud)

这导致:

>>> myDoc = 'super1'
>>> lookup('supervisors', myDoc)
Steve
Run Code Online (Sandbox Code Playgroud)

在极少数情况下,您确实需要动态引用局部变量,您可以使用该locals()函数执行此操作,它返回将本地名称映射到值的字典.请注意,在函数内,对locals()映射的更改不会反映在函数本地名称空间中.