为什么在尝试遍历键值对列表并计算键发生多少次时出现键错误?我收到的错误类似于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
答案 0 :(得分:2)
尝试
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密钥可以工作。
答案 1 :(得分:0)
尝试
self.node_degree[source] = self.node_degree.get(source, 0) + 1