【问题标题】:python dictionary key error when appending key in loop [duplicate]在循环中附加键时python字典键错误[重复]
【发布时间】:2020-03-02 11:39:13
【问题描述】:

为什么在尝试遍历键值对列表并计算键出现的次数时出现键错误?我得到的错误类似于 KeyError: 3,这意味着密钥不存在。我不能这样添加吗? self.node_degree[来源] += 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


    【解决方案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 键就可以了。

    【讨论】:

      【解决方案2】:

      试试

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

      【讨论】:

      • 不知道为什么这被否决了,我想说使用get 方法是解决这个问题的规范方法。
      猜你喜欢
      • 2016-12-12
      • 2020-05-14
      • 1970-01-01
      • 2019-07-26
      • 1970-01-01
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多