为什么尝试遍历键值对列表并计算键发生多少次时出现键错误?我收到的错误类似于KeyError:3,这意味着该键不存在。我不能这样添加吗? self.node_degree [source] + = 1
class PageRank:
def __init__(self, edge_file):
self.node_degree = {}
self.max_node_id = 0
self.edge_file = edge_file
def read_edge_file(self, edge_file):
with open(edge_file) as f:
for line in f:
if line[0] != '%':
val = line.split()
yield int(val[0]), int(val[1])
def get_max_node_id(self):
return self.max_node_id
def calculate_node_degree(self):
for source,target in self.read_edge_file(self.edge_file):
self.node_degree[source] += 1
尝试一下
for source,target in self.read_edge_file(self.edge_file):
try:
self.node_degree[source] += 1
except:
self.node_degree[source] = 1
[您试图将1
添加到None
,因为如果dict中没有这样的键,那么您没有在dict中创建键,因此在except
中创建新的dict键就可以了。
尝试
self.node_degree[source] = self.node_degree.get(source, 0) + 1
尝试
>>> d = {'a':1}
>>> d['c'] = d.get('c',0) + 1
>>> d
{'a': 1, 'c': 1}
>>>