2012-05-13 15 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:do not、windowsでもスラッシュがサポートされています)、エスケープするか、* raw文字列*を使用する必要があります: '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)のように使用します。グローバル変数部分は必要ありませんので、削除してください。

関連する問題