一、哈希表
哈希表(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 # 将键值对放入相应的桶中