2012-05-13 4 views
0

주차 용으로 자동차 등록을위한 몇 가지 코드가 있습니다. 나는 자동차 등록 번호를 키로하고 사전에 정보를 값으로 사용하여 사전을 만들었다. 등록 번호를 입력하여 각 등록의 세부 사항 (값)을 얻으려고합니다. ID가 사전에 있어도 사전에 메시지가 표시되지 않습니다.사전의 키에서 값을 가져 오는 방법

======= Loading Progam ======= 
>>> detailForRegistrationNumber('EDF768') 
EDF768 Not in dictionary 

그러나 사전은 위의 등록 번호가 있습니다 :

global variable 
data_dict = {} 
def createNameDict(filename): 
    path = "C:\Users\user\Desktop" 
    basename = "ParkingData_Part2.txt" 
    filename = path + "\\" + basename 
    file = open(filename) 
    contents = file.read() 
    print contents,"\n" 


    data_list = [lines.split(",",1) for lines in contents.split("\n")] 
    #data_list.sort() 
    #print data_list 
    #dict_list = [] 

    for line in data_list: 
    keys = line[0] 
    values = line[1] 

    data_dict[keys] = values 
    print data_dict,"\n" 
    print data_dict.keys(),"\n" 
    print data_dict.values(),"\n" 
    print data_list 
def detailForRegistrationNumber(regNumber): 
    regNumber == "keys" 
    if regNumber in data_dict: 
    print data_dict[regNumber] 
    else: 
    print regNumber, "Not in dictionary" 

내가 무엇입니까 오류 메시지는

{'HUY768': ' Wilbur Matty, 8912, Creche_Parking', 'GH7682': ' Clara Hill, 7689, AgHort_Parking', 'GEF123': ' Jill Black, 3456, Creche_Parking', 'WER546': ' Olga Grey, 9898, Creche_Parking', 'TY5678': ' Jane Miller, 8987, AgHort_Parking', 'ABC234': ' Fred Greenside, 2345, AgHort_Parking', 'KLOI98': ' Martha Miller, 4563, Vet_Parking', **'EDF768'**: ' Bill Meyer, 2456, Vet_Parking', 'JU9807': ' Jacky Blair, 7867, Vet_Parking', 'DF7800': ' Jacko Frizzle, 4532, Creche_Parking', 'ADF645': ' Cloe Freckle, 6789, Vet_Parking'} 
+0

경로에서 백 슬래시를 사용하는 경우 (protip : do not, windows도 슬래시를 지원합니다!), 이스케이프 처리하거나 * 원시 문자열 *을 사용해야합니다 :'r'C : \ whatever \ path'' – ThiefMaster

+0

'기본'방법은 어디에 있습니까? createNameDict는 어디에 호출됩니까? 위의 코드 스 니펫에서 호출되었거나 호출하는 것을 잊었는지 여부를 알 수 없습니다. 전화 걸기를 잊은 경우 모든 인수에 대해 detailForRegistrationNumber를 호출하면 사전에없는 것입니다. – Neal

+3

그 글을 입력하는 방법에 관한 다른 게시물의 조언을 따르지 않는 것 같습니다 : http://stackoverflow.com/questions/10545544/converting-lists-to-dictionaries/10545736#10545736 – hexparrot

답변

2

나는 당신의 문제가 함수 def createNameDict(filename):이하지 않는 생각을 아무것도 돌려주지 않기 때문에, 그 안에있는 data_dict는 단지 지역 변수입니다!

return data_dict 함수의 마지막 줄을 만든 다음 data_dict = createNameDict(filename)과 같이 사용하십시오. 전역 변수 부분은 필요 없으므로 제거하십시오.

관련 문제