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()、ローカル名を値にマッピングする辞書を返します。locals()関数内では、マッピングの変更は関数のローカル名前空間に反映されないことに注意してください。

于 2013-03-11T21:06:42.100 に答える