2017-10-02 10 views
0

以下のコードでキーエラーが発生しました。私は人の名前と年齢の両方を持っているnames.txtというファイルを読んでいます。すべての名前は小文字ですが、辞書を検索しているときにname.lower()関数を実行すると、キーエラーがスローされます。keyerror:辞書python3

fo = open('names.txt' ,'r') 
data = fo.readlines() 
fo.close() 
dicti = {} 
for i in data: 
    new_list = i.split(',') 
    dicti[new_list[0].lower()] = new_list[1].strip('\n') 
name = input ('enter the name to be searched: ') 
if name.lower() in dicti.keys(): 
    print (dicti[name]) 
elif name == 'exit': 
    quit() 
else: 
    print ('name ' + name.title() + ' not found') 

ファイルnames.txtデータは次のとおりです。

Sophia,35 
Emma,28 
Olivia,16 
Isabella,10 
Ava,9 
Mia,26 
Emily,4 
Abigail,33 

誰かがエラーについて教えてくださいすることができます。このため

+0

キーが辞書にあるかどうかをチェックするために 'name.lower()'を使用しました。実際には辞書から値を取得するときに 'name'自体を使用しました。これは、すべてが小文字で入力されていなければ失敗するでしょう。 – jasonharper

答えて

0

は:

if name.lower() in dicti.keys(): 
    print (dicti[name]) 

あなたは、小文字の名前がdictiになっていることを確認したが、その後小文字変換せずに、そのままそれをアクセスします。適切なコードは次のようになります:

if name.lower() in dicti.keys(): 
    print (dicti[name.lower()]) 
関連する問題