微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用python中的列表变量实现哈希表

如何解决使用python中的列表变量实现哈希表

我使用列表变量实现了一个简单的哈希表。下面是我的代码

hash_table = list([0 for i in range(8)])

def get_key(data):
    return hash(data)

def hash_function(key):
    return key % 8

def save_data(data,value):
    hash_address = hash_function(get_key(data))
    hash_table[hash_address] = value
    
def read_data(data):
    hash_address = hash_function(get_key(data))
    return hash_table[hash_address]

将一些数据放入哈希表后,我发现了一些奇怪的东西。

save_data('Andy','01055553333')
save_data('Dave','01044443333')
save_data('Trump','01022223333')

read_data('Dave')

以上代码是将数据和值放入哈希表后读取Dave的值。

这是我的结果。

'01022223333'

但不知何故,结果是特朗普的价值。所以,我检查了整个哈希表,但找不到 Dave 的值。

hash_table
[0,'01055553333','01022223333',0]

我认为这是由哈希表的大小引起的。但是将大小从 8 增加到 100 后,仍然不包括 Dave 的值。

或者,这个问题是由哈希冲突引起的吗?

我想知道为什么会这样,以及如何解决这个问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。