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 

왜 그런 일이 발생하며 어떻게 해결할 수 있습니까?

미리 감사드립니다.

+0

은 잘못된 값으로 설정된 myDoc 값을 방금 변경했습니다. 이제 제 요지가 더 분명해야합니다. – kstratis

답변

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() 매핑에 대한 변경 사항은 함수 로컬 네임 스페이스에 반영되지 않습니다.

+0

@Pavel : 내 게시물을 지금 다시 편집 할 수 있습니까? :-P –

+0

Sorry :)) 나는 방금 동일한 게시물을 버렸고, 나는 * 무언가를해야만했다. :) –

+0

@PavelAnossov : 처음 몇 분 안에 수정과 추가 정보를 편집하는 경향이 있는데, 나는 약간 당황 스럽다. 항상 새로운 편집 내용을 알게됩니다. –

관련 문제