2012-10-18 253 views
0

我正在嘗試運行一個python程序,該程序可以從文件中運行字典,併爲每個字給出分數和標準偏差的單詞列表。我的計劃是這樣的:Python字典關鍵錯誤

theFile = open('word-happiness.csv', 'r') 

theFile.close() 



def make_happiness_table(filename): 
    ''' make_happiness_table: string -> dict 
     creates a dictionary of happiness scores from the given file ''' 

return {} 


make_happiness_table("word-happiness.csv") 

table = make_happiness_table("word-happiness.csv") 
(score, stddev) = table['hunger'] 
print("the score for 'hunger' is %f" % score) 

我有字「飢餓」在我的文件,但是當我運行這個程序採取「飢餓」,並返回其給定的分數和標準方差,我得到:

(score, stddev) = table['hunger'] 
KeyError: 'hunger' 

即使字典中出現「飢餓」,我是如何得到一個關鍵錯誤的?

+2

您可以發佈完整代碼make_happiness_table嗎?根據你的操作,你只需要返回一個空的字典......或者在這裏修正你的代碼,因爲它看起來有點搞砸了(你將文件名傳遞給一個什麼都不做的函數,而你之前打開這個文件的方式。 ..) –

+0

打印你的字典('print(table)')並檢查你在那裏有什麼。我敢打賭,它不在你的字典裏(也許它在文件中),但是如果這個基本的數據結構有錯誤,Iit會令人吃驚。 – ted

+0

那可能是我的問題。我想讓詞典由.csv文件中的詞彙組成,並給出分數和標準偏差。我怎麼做,所以它不是一個空字典? –

回答

1

"hunger"不在字典中(這就是KeyError告訴你的)。問題可能是你的make_happiness_table函數。我不知道你是否已經發布了完整的代碼,但它並不重要。在函數結束時,無論函數內部發生了什麼,都會返回一個空字典({}

您可能想要在該函數內打開文件,創建字典並將其返回。例如,如果您的CSV文件僅2列(用逗號分隔),你可以這樣做:

def make_happiness_table(filename): 
    with open(filename) as f: 
     d = dict(line.split(',') for line in f) 
     #Alternative if you find it more easy to understand 
     #d = {} 
     #for line in f: 
     # key,value = line.split(',') 
     # d[key] = value 
    return d