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();
我不知道为什么。我很感激任何帮助。
答案 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, {})