Python 字典为什么查询高效

Python 字典(dict)之所以查询效率非常高(平均时间复杂度为 O(1)),主要归功于其底层实现——哈希表(Hash Table)

1. 核心:哈希表(Hash Table)

字典本质上是一个哈希表。哈希表是一种通过键(key) 直接映射到值(value) 存储位置的数据结构。

工作流程:
  • 哈希函数(Hash Function)
    • 当你向字典中插入一个键值对(如 d['name'] = 'Alice')时,Python 会先对键 'name' 调用其 __hash__() 方法,得到一个整数,称为哈希值(hash value)
    • 这个哈希值是确定性的:同一个键,每次计算得到的哈希值都相同。
    • 不可变类型(如 str, int, tuple)都有 __hash__ 方法,因此可以作为字典的键;而可变类型(如 list, dict)没有,所以不能作为键。
  • 索引计算(Indexing)
    • 哈希值通常是一个很大的整数,不能直接用作数组下标。
    • Python 会将哈希值通过一个函数(通常是取模运算)映射到哈希表的槽位(slot) 索引上。例如:index = hash(key) % table_size
  • 存储/查找
    • Python 直接访问计算出的索引位置,将值存储进去(插入)或读取出来(查找)。
    • 由于数组的索引访问是 O(1) 操作,所以字典的查找/插入/删除平均也是 O(1)。

2. 处理哈希冲突(Collision)

不同的键可能产生相同的哈希值(或映射到同一索引),这称为哈希冲突。Python 字典使用了两种主要技术来解决:

a. 开放寻址法(Open Addressing)
  • Python 字典主要使用基于开放寻址的哈希表
  • 当目标槽位已被占用时,它会按照一定的探测序列(如线性探测、二次探测)寻找下一个空闲槽位。
  • Python 使用了一种优化的探测方式,能有效减少“聚集”(clustering)问题。
b. 键值对存储结构
  • Python 字典的底层结构设计巧妙,它将哈希值、键、值作为一个整体存储。
  • 在查找时,即使索引位置被占用,Python 会先比较哈希值,如果不同则直接跳过;如果相同,再比较是否相等(==)。
  • 这种“先比哈希,再比键”的方式大大加快了查找速度,尤其是在哈希冲突较多时。

3. 动态扩容(Resizing)

  • 哈希表的大小是固定的,但字典是动态的。
  • 当字典中元素过多,导致装载因子(元素数 / 槽位数)过高时,哈希冲突概率上升,性能下降。
  • Python 会在装载因子达到一定阈值(如 2/3)时,自动扩容:创建一个更大的哈希表,并将所有键值对重新哈希到新表中。

Read more

【DeepSeek应用】100个 DeepSeek 官方推荐的工具箱

【DeepSeek应用】100个 DeepSeek 官方推荐的工具箱

【DeepSeek应用】Deepseek R1 本地部署(Ollama+Docker+OpenWebUI) 【DeepSeek应用】DeepSeek 搭建个人知识库(Ollama+CherryStudio) 【DeepSeek应用】100个 DeepSeek 官方推荐的工具箱 【DeepSeek应用】Zotero+Deepseek 阅读与分析文献 【DeepSeek应用】100个 DeepSeek 官方推荐的工具箱 * 1. DeepSeek 工具箱:应用程序 * 2. DeepSeek 工具箱:AI Agent 框架 * 3. DeepSeek 工具箱:RAG 框架 * 4. DeepSeek 工具箱:即时通讯软件 * 5. DeepSeek 工具箱:浏览器插件 * 6. DeepSeek 工具箱:

By Ne0inhk
假网站排全网第二,真官网翻五页都找不到!NanoClaw创始人破防:SEO之战,我快要输了

假网站排全网第二,真官网翻五页都找不到!NanoClaw创始人破防:SEO之战,我快要输了

整理 | 苏宓 出品 | ZEEKLOG(ID:ZEEKLOGnews) 自从 OpenClaw 爆火之后,各种“Claw”项目接连出现,其中以安全优化版 NanoClaw 最为知名。它的核心代码仅有 4000 行,却获得了 AI 大牛 Andrej Karpathy 的点赞。 可谁也没想到,这款口碑极佳的开源项目,近来竟被一个仿冒网站抢了风头。 投诉无门之下,NanoClaw 创始人 Gavriel Cohen 在 X 社交平台上无奈发文怒斥:谷歌搜索错误地将假网站排在真官网前面,不仅破坏了项目声誉,还埋下了严重的安全隐患,而他费尽心力,却只能哀叹一句——“我正在为自己的开源项目打 SEO 战,但我快要输了。” 那么,NanoClaw 究竟发生了什么?又是怎么走红的?事情还要从 OpenClaw

By Ne0inhk
曝Windows 12将于今年发布?以AI为核心、NPU成「硬件门槛」,网友吐槽:“不想要的全塞进来了”

曝Windows 12将于今年发布?以AI为核心、NPU成「硬件门槛」,网友吐槽:“不想要的全塞进来了”

整理 | 郑丽媛 出品 | ZEEKLOG(ID:ZEEKLOGnews) 当年,微软一句“Windows 10 将是最后一个版本”的表态,让不少用户以为 Windows 进入了“只更新、不换代”的时代。但几年过去,现实却完全不同。 在 Windows 11 发布之后,如今关于 Windows 12 的传闻再次密集出现。从内部代号、代码片段,到硬件厂商的暗示与 OEM 预热标签,种种线索拼在一起,勾勒出一个明显的趋势——这不会只是一次常规升级,而更像是一次围绕 AI 的平台级重构。 更关键的是,这次争议,可能远比当年 TPM 2.0 更大。 精准卡位 Windows 10 退场的时间?

By Ne0inhk
“裸奔龙虾”数量已达27万只,业内人士警告;AI浪潮下,中传“砍掉”翻译等16个专业;薪资谈判破裂,三星电子8.9万人要罢工 | 极客头条

“裸奔龙虾”数量已达27万只,业内人士警告;AI浪潮下,中传“砍掉”翻译等16个专业;薪资谈判破裂,三星电子8.9万人要罢工 | 极客头条

「极客头条」—— 技术人员的新闻圈! ZEEKLOG 的读者朋友们好,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。(投稿或寻求报道:[email protected]) 整理 | 郑丽媛 出品 | ZEEKLOG(ID:ZEEKLOGnews) 一分钟速览新闻点! * “裸奔龙虾”已高达27万只!业内人士警告:一旦黑客入侵,敏感信息一秒搬空 * 阿里云 CTO 周靖人代管千问模型一号位,刘大一恒管理更多团队 * 中国传媒大学砍掉翻译、摄影等 16 个本科专业,直言教育要面向人机分工时代 * 雷军放话:小米将很快推出 L3、L4 的驾驶 * 消息称原理想汽车智驾一号位郎咸朋具身智能赛道创业 * vivo 前产品经理宋紫薇创业,瞄准 AI 时尚Agent,获亿元融资 * MiniMax 发布龙虾新技能,股价暴涨超 23% * 薪资谈判破裂,三星电子

By Ne0inhk