如何在Python中创建一个散列表
时间: 2024-02-23 13:59:51 浏览: 140
在Python中,可以使用字典(dictionary)数据类型来创建散列表。字典是一种可变容器模型,可以存储任意数量的Python对象,每个对象都有一个唯一的键(key)和对应的值(value)。
要创建一个空的字典,可以使用以下代码:
```
hash_table = {}
```
要在字典中添加键值对,可以使用以下代码:
```
hash_table[key] = value
```
其中,key是要添加的键,value是对应的值。如果字典中已经存在该键,则会更新对应的值。
例如,以下代码创建了一个包含三个键值对的字典:
```
hash_table = {'apple': 1, 'banana': 2, 'orange': 3}
```
可以使用以下代码访问字典中的值:
```
value = hash_table[key]
```
其中,key是要访问的键,value是对应的值。如果字典中不存在该键,则会抛出KeyError异常。
相关问题
散列表的查找代码python
在Python中,散列表(也称为哈希表或字典)提供了高效的查找、插入和删除操作。散列表是通过将键(key)通过哈希函数转换为索引来存储数据的。这里是一个简单的Python字典查找代码示例:
```python
# 创建一个字典,其中键值对表示学生的姓名和分数
students = {
"Alice": 90,
"Bob": 85,
"Charlie": 95,
"David": 80
}
# 查找特定学生的分数
def search_score(name):
if name in students: # 判断名字是否在字典中
return students[name] # 如果在,返回对应的分数
else:
return None # 如果不在,返回None
# 使用函数查找Bob的分数
score = search_score("Bob")
print(f"Bob的分数是: {score}")
```
在这个例子中,`search_score`函数接受一个名字作为参数,如果这个名字是字典`students`中的键,它会返回相应的值(分数)。如果键不存在,函数将返回`None`。
基于上述LinkList类,建立一个采用链接法处理散列冲突的散列表,实现插入、 查找和删除操作。散列函数采用除法散列法,假定表中要存放500个元素,装载 因子约为3,选择合适的散列表大小python。
首先,根据装载因子和元素个数,可以计算出散列表的大小为 `table_size = 500 // 3 = 167`。
接下来,我们需要实现一个散列函数。这里我们采用除法散列法,即将关键字除以散列表大小取余数。代码如下:
```python
def hash_func(key, table_size):
return key % table_size
```
然后,我们定义一个散列表类,其中包含插入、查找和删除操作。在插入操作中,如果发生冲突,我们使用链接法解决。代码实现如下:
```python
class HashTable:
def __init__(self, table_size=167):
self.table_size = table_size
self.table = [None] * table_size
def insert(self, key, value):
index = hash_func(key, self.table_size)
if self.table[index] is None:
self.table[index] = LinkList()
self.table[index].append((key, value))
def find(self, key):
index = hash_func(key, self.table_size)
if self.table[index] is not None:
for node in self.table[index]:
if node.data[0] == key:
return node.data[1]
return None
def delete(self, key):
index = hash_func(key, self.table_size)
if self.table[index] is not None:
for node in self.table[index]:
if node.data[0] == key:
self.table[index].remove(node)
return True
return False
```
在这个散列表类中,我们使用了一个长度为 `table_size` 的列表来存储链表。每个元素是一个链表节点,其中包含一个键值对 `(key, value)`。在插入操作中,我们首先计算出关键字的散列值,然后将其插入到对应的链表中。如果链表不存在,则创建一个新的链表。在查找和删除操作中,我们也需要计算出关键字的散列值,然后遍历对应的链表找到相应的节点。如果找到了,我们就可以返回或删除节点。
现在我们可以创建一个散列表对象,然后测试插入、查找和删除操作了。代码如下:
```python
hash_table = HashTable()
# 插入操作
hash_table.insert(1, 'a')
hash_table.insert(2, 'b')
hash_table.insert(3, 'c')
hash_table.insert(4, 'd')
hash_table.insert(5, 'e')
# 查找操作
print(hash_table.find(3)) # 输出:c
print(hash_table.find(6)) # 输出:None
# 删除操作
hash_table.delete(4)
print(hash_table.find(4)) # 输出:None
```
在这个例子中,我们向散列表中插入了5个元素,然后分别查找了关键字为3和6的节点,最后删除了关键字为4的节点。运行结果如下:
```
c
None
None
```
阅读全文