栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python字典哈希查找如何工作?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python字典哈希查找如何工作?

这是一些更接近实际情况的伪代码。想象一下,字典有一个

data
包含键,值对和a 的属性,a
size
是分配的单元格数。

def lookup(d, key):    perturb = j = hash(key)    while True:        cell = d.data[j % d.size]        if cell.key is EMPTY: raise IndexError        if cell.key is not DELETED and (cell.key is key or cell.key == key): return cell.value        j = (5 * j) + 1 + perturb        perturb >>= PERTURB

perturb
值可确保在解决哈希冲突时最终使用哈希码的所有位,但是一旦哈希值降为0,
(5*j)+1
它将最终接触表中的所有单元格。

size
总是比实际使用的单元格数量大得多,因此可以保证哈希在密钥不存在时最终会击中一个空单元格(通常应该很快击中一个)。键的值也已删除,以指示不应终止搜索但当前未使用的单元格。

关于密钥字符串的长度的问题,对字符串进行哈希处理将查看字符串中的所有字符,但是字符串也具有用于存储计算出的哈希值的字段。因此,如果您每次都使用不同的字符串进行查找,则字符串的长度可能会有影响,但是如果您有一组固定的键并重复使用相同的字符串,则在首次使用哈希后将不会重新计算哈希值。Python可以从中受益,因为大多数名称查找都涉及字典,并且每个变量或属性名称的单个副本都存储在内部,因此每次访问属性

x.y
时都会进行字典查找,而不是对哈希函数的调用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/391240.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号