ITPub博客

首页 > 应用开发 > Python > 使用 Python 实现一个哈希表。

使用 Python 实现一个哈希表。

原创 Python 作者:mingtian66 时间:2024-11-07 10:31:44 0 删除 编辑

以下是一个用 Python 实现的简单哈希表:

class HashTable:
    def __init__(self, size=10):
        self.size = size  # 哈希表的大小
        self.table = [[] for _ in range(self.size)]  # 初始化表格,使用链表法解决冲突

    def _hash_function(self, key):
        """计算哈希值"""
        return hash(key) % self.size

    def insert(self, key, value):
        """插入键值对"""
        index = self._hash_function(key)
        # 检查是否已经存在该键,如果存在则更新
        for i, (k, v) in enumerate(self.table[index]):
            if k == key:
                self.table[index][i] = (key, value)
                return
        # 否则插入新的键值对
        self.table[index].append((key, value))

    def get(self, key):
        """获取键对应的值"""
        index = self._hash_function(key)
        for k, v in self.table[index]:
            if k == key:
                return v
        return None  # 如果键不存在则返回 None

    def remove(self, key):
        """移除键值对"""
        index = self._hash_function(key)
        for i, (k, _) in enumerate(self.table[index]):
            if k == key:
                del self.table[index][i]
                return True
        return False  # 如果键不存在返回 False

    def __repr__(self):
        """打印哈希表的内容"""
        return str(self.table)


# 测试哈希表
ht = HashTable()

# 插入一些键值对
ht.insert("name", "Alice")
ht.insert("age", 25)
ht.insert("gender", "Female")

print("哈希表内容:", ht)

# 获取值
print("获取 'name':", ht.get("name"))
print("获取 'age':", ht.get("age"))

# 删除键值对
ht.remove("gender")
print("删除 'gender' 后的哈希表内容:", ht)

说明

    哈希函数:_hash_function 方法使用 Python 内置的 hash 函数,并将结果取模哈希表的大小以获得索引。
    链表法解决冲突:每个位置是一个链表,插入时如果发生冲突就将新元素添加到链表中。
    插入、获取和删除:支持基本的插入(insert)、获取(get)和删除(remove)操作。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70040412/viewspace-3045474/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2024-08-07

  • 博文量
    589
  • 访问量
    603025