Python----数据结构(哈希表:哈希表组成,哈希冲突)

一、哈希表

哈希表(Hash table)是一种常用、重要、高效的数据结构。

哈希表通过哈希函数,可以快速地将键(Key)映射到值(Value)。从而允许在近常数时间内对键关联的值进行插入、删除和查找操作。

哈希表的主要思想是通过哈希函数将键转换为索引,将索引映射到数组中的存储位置

通俗的例子是,为了查找电话簿中某人的号码,可以创建一个按照人名首字母顺序排列的表,在首字母为L的表中查找“雷”姓的电话号码,显然比直接查找就要快得多。

二、代码展示 

2.1、键值对

class Pair:  
    """键值对的类,包含一个键和一个值"""  

    def __init__(self, key: int, val: str):  
        """初始化键值对"""  
        self.key = key  # 键,整数类型  
        self.val = val  # 值,字符串类型  

    def __repr__(self):  
        """返回键值对的字符串表示"""  
        return f"{self.key} -> {self.val}"  

2.2、初始化

    def __init__(self):  
        """构造方法,初始化哈希表"""  
        # 创建一个包含 100 个桶的数组  
        self.buckets: list[Pair | None] = [None] * 100  

2.3、哈希函数

    def hash_func(self, key: int) -> int:  
        """哈希函数,将键映射到索引"""  
        index = hash(key) % 100  # 使用内置哈希函数计算键的哈希值,并对桶的数量取模  
        return index  

2.4、添加键值对

    def put(self, key: int, val: str):  
        """添加键值对到哈希表"""  
        pair = Pair(key, val)  # 创建新的键值对  
        index: int = self.hash_func(key)  # 计算键的哈希索引  
        self.buckets[index] = pair  # 将键值对放入相应的桶中  

2.5、查询值


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值