在循环中附加键时python字典键错误

时间:2019-11-06 03:03:51

标签: python dictionary

为什么在尝试遍历键值对列表并计算键发生多少次时出现键错误?我收到的错误类似于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

2 个答案:

答案 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