python实现链式哈希表
时间: 2024-05-11 13:11:22 浏览: 186
Python中可以使用字典(Dictionary)来实现链式哈希表。字典是Python中内置的一种数据结构,它使用哈希表来存储键值对。
在Python中,字典的键是唯一的,而值可以是任意类型的对象。字典使用哈希函数将键映射到哈希表中的一个位置,然后将值存储在该位置上。如果多个键映射到同一个位置,就会形成链式结构。
下面是一个简单的示例代码,演示了如何使用字典实现链式哈希表:
```python
class HashTable:
def __init__(self):
self.table = {}
def insert(self, key, value):
if key in self.table:
# 如果键已存在,则将新值添加到链表中
self.table[key].append(value)
else:
# 如果键不存在,则创建一个新的链表
self.table[key] = [value]
def search(self, key):
if key in self.table:
# 返回键对应的链表
return self.table[key]
else:
return None
def delete(self, key, value):
if key in self.table:
# 从链表中删除指定值
self.table[key].remove(value)
# 如果链表为空,则删除键
if len(self.table[key]) == 0:
del self.table[key]
# 创建哈希表对象
hash_table = HashTable()
# 插入键值对
hash_table.insert('A', 1)
hash_table.insert('B', 2)
hash_table.insert('A', 3)
# 查找键对应的值
print(hash_table.search('A')) # 输出:[1, 3]
# 删除键值对
hash_table.delete('A', 1)
# 查找键对应的值
print(hash_table.search('A')) # 输出:
```
上述代码中,`HashTable`类封装了字典对象,并提供了插入、查找和删除操作。当插入键值对时,如果键已存在,则将新值添加到链表中;如果键不存在,则创建一个新的链表。在查找操作中,根据键返回对应的链表;在删除操作中,从链表中删除指定的值,并在链表为空时删除键。
阅读全文