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

问题描述 投票:0回答:3

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

python dictionary
3个回答
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键就可以了。


0
投票

尝试

self.node_degree[source] = self.node_degree.get(source, 0) + 1

0
投票

尝试

>>> d = {'a':1}
>>> d['c'] = d.get('c',0) + 1
>>> d
{'a': 1, 'c': 1}
>>>
© www.soinside.com 2019 - 2024. All rights reserved.