You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python线性探测哈希表插入或修改方法异常问题求助

Python线性探测哈希表插入或修改方法异常问题求助

嘿,各位大佬,我最近实现了一个用线性探测解决冲突的哈希表,每个键对应一个整数列表作为值,但现在遇到了个棘手的问题,怀疑是插入或者修改方法出了问题,想请大家帮忙看看!

情况是这样的:我往哈希表里插入了20000个带字符串名称的键,每个键都对应一个包含8个整数的列表;之后我调用修改方法做了100万次修改操作——本来应该是通过键找到对应的键值对,然后修改列表里的数值,但结果是大部分键的数值根本没变化,只有极少数能成功被修改。

下面是我写的哈希表代码(insert方法没写完,到线性探测的循环部分就断了,但先贴出来供大家参考):

class hashtable:
    def __init__(self, size):
        self.size = size
        self.data = [None] * size
        self.count = 0
    def hash_function(self, key):#Δίνω κλειδί, επιστρέφει το υπόλοιπο της διαίρεσης του κωδικοποιημένου (μέσω της hash) κλειδιού, για ναναι εντός ορίου
        hash_value = 0
        for char in key:
            hash_value = (hash_value * 31 + ord(char)) % self.size
        return hash_value 
    def insert(self, key):
        index = self.hash_function(key)

        # Linear probing
        while self.data[index...

我自己梳理了几个可能的方向,但还没定位到问题:

  • 会不会是insert方法里的线性探测逻辑有问题?比如遇到冲突时没正确找到空位置或者已存在的键,导致后续修改找不到目标?
  • 我没贴出来的change方法大概率是重灾区?比如线性探测找键的时候,循环条件写错了,提前终止了遍历,导致大部分键都没被找到?
  • 哈希表的大小设置得不合理,负载因子太高,导致线性探测的链太长,查找时出错?

有没有大佬能给点排查思路或者指出可能的问题点呀?感激不尽!

备注:内容来源于stack exchange,提问作者Aris App123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 09:20:29