用Python实现一个Hashmap

74 阅读1分钟

在Python中,可以使用字典(dict)数据结构来实现哈希表(Hashmap)。字典是一种可变的、无序的键值对集合,其中的键是唯一的,可以用于快速查找和存储数据。

下面是一个简单的示例,在Python中实现一个哈希表:



class HashMap:
    def __init__(self):
        self.size = 10  # 哈希表的初始大小
        self.hashmap = [[] for _ in range(self.size)]  # 使用列表实现哈希表

    def _hash(self, key):
        # 哈希函数,将键映射到哈希表的索引
        return hash(key) % self.size

    def insert(self, key, value):
        # 插入键值对到哈希表
        index = self._hash(key)
        for item in self.hashmap[index]:
            if item[0] == key:
                # 若键已存在,则更新对应的值
                item[1] = value
                return
        # 若键不存在,则添加新的键值对
        self.hashmap[index].append([key, value])

    def get(self, key):
        # 获取键对应的值
        index = self._hash(key)
        for item in self.hashmap[index]:
            if item[0] == key:
                return item[1]
        # 若键不存在,则返回None
        return None

    def remove(self, key):
        # 删除键值对
        index = self._hash(key)
        for i, item in enumerate(self.hashmap[index]):
            if item[0] == key:
                # 找到键,删除对应的键值对
                del self.hashmap[index][i]
                return


使用上述的 HashMap 类示例,可以进行以下操作:

# 创建哈希表对象
hashmap = HashMap()

# 插入键值对
hashmap.insert("apple", 1)
hashmap.insert("banana", 2)
hashmap.insert("orange", 3)

# 获取键对应的值
print(hashmap.get("apple"))  # 输出: 1
print(hashmap.get("banana"))  # 输出: 2
print(hashmap.get("watermelon"))  # 输出: None

# 更新键对应的值
hashmap.insert("apple", 5)
print(hashmap.get("apple"))  # 输出: 5

# 删除键值对
hashmap.remove("banana")
print(hashmap.get("banana"))  # 输出: None

以上就是一个简单的用Python实现的哈希表(HashMap)的示例。在实际应用中,可以根据需要进行扩展和优化。