2012-10-18 263 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