嵌套Python字典错误

嵌套Python字典错误,python,dictionary,hashmap,Python,Dictionary,Hashmap,错误: 我试图完成的是创建一个字典字典,如下所示: KeyError: 13 self.langStatistics初始化如下: dict { "a" => { 5 => 15, 6 => 16 }, "b" => { 1 => 15 } } def ProcessFile(self, fileName): fileStream = open(fileName, "rt")

错误:

我试图完成的是创建一个字典字典,如下所示:

KeyError: 13
self.langStatistics
初始化如下:

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)
ProcessFile方法在
self.langStatistics[lang]=defaultdict()处抛出错误


我不知道为什么。如果您能提供帮助,我将不胜感激。

您已将
self.langStatistics
定义为具有
dict
值的。但是,您正在尝试用
defaultdict
实例化一个键,这与
dict
不同

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

self.langStatistics = defaultdict(dict);

哪个错误?请发布回溯…除了这对于字典来说不是有效的python之外,什么是回溯?我刚刚用错误编辑了我的答案。不知道为什么人们会这么快就否决投票。@乔治亚格洛夫·快速否决投票很可能是因为以下原因:你的问题是从完全错误的dict样本开始的(使用保留的
dict
,完全忽略字典的Pyhton语法),而你没有提供错误跟踪。请毫不犹豫地提供详细的错误跟踪信息,这会使回答更容易。旁注:请删除Python中的这些分号。它们不是强制性的,谢谢。这是我的第一个python脚本,所以我仍然在学习新的东西。谢谢你的帮助。
>>> a = defaultdict(defaultdict)
>>> a['fr']['lang'] = 'abc'
>>> a['fr']
defaultdict(None, {'lang': 'abc'})
>>> a['en']
defaultdict(None, {})