嵌套Python字典错误

时间:2014-06-04 13:43:42

标签: python dictionary hashmap

ERROR:

KeyError: 13

我想要完成的是创建一个字典词典,如下所示:

dict {
 "a" => {
       5 => 15,     
       6 => 16
     },
 "b" => {
       1 => 15
     }
}

def ProcessFile(self, fileName):
    fileStream = open(fileName, "rt")
    # parse each line of the file
    for line in fileStream.readlines():
        # tokenize the line
        line_tokens = line.split("\t")
        distance = self.EditDistance(line_tokens[3], line_tokens[4])
        lang = line_tokens[0]
        try:
            if lang in self.langStatistics:
                self.langStatistics[lang][distance]+=1
            else:
                # if the key has not been used before, create a new dictionary
ERROR   ---->   self.langStatistics[lang] = defaultdict();
                self.langStatistics[lang][distance] = 1
        except Exception,e:
            print(e)
            sys.exit(2)

self.langStatistics初始化如下:

self.langStatistics = defaultdict(dict);

ProcessFile方法在self.langStatistics[lang] = defaultdict();

处抛出错误

我不知道为什么。我很感激任何帮助。

1 个答案:

答案 0 :(得分:1)

您已将self.langStatistics定义为具有dict值的defaultdict。但是,您尝试使用defaultdict来设置密钥,这与dict不同!

您需要使用self.langStatistics = defaultdict(defaultdict)self.langStatistics[lang] = {}。或者更简单:不包含此行,当您第一次尝试访问元素时,它会自动完成。

>>> a = defaultdict(defaultdict)
>>> a['fr']['lang'] = 'abc'
>>> a['fr']
defaultdict(None, {'lang': 'abc'})
>>> a['en']
defaultdict(None, {})