嵌套Python词典

2024-10-03 21:26:44 发布

您现在位置:Python中文网/ 问答频道 /正文

错误:

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();处抛出错误

我不知道为什么。如果能帮上忙,我将不胜感激


Tags: theinselflangif错误linefilename
1条回答
网友
1楼 · 发布于 2024-10-03 21:26:44

您已经将self.langStatistics定义为具有dict值的^{}。但是,您正在尝试用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, {})

相关问题 更多 >