嵌套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, {})