2012-05-13 31 views
0

我有一些停车的汽车注册代码。我创建了一本汽车注册号字典作为键和休息信息的字典值。我试图通过输入注册号码来获取每个注册的详细信息(值)。即使id在字典中,它也会显示字典中未找到的消息。如何从字典中的键获取值

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" 

我得到的错误信息是:

======= Loading Progam ======= 
>>> detailForRegistrationNumber('EDF768') 
EDF768 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:不要,甚至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)一样使用它。不需要全局变量部分,只需删除它即可。

相关问题