当前位置: 首页 > news >正文

Python2和Python3字典底层原理

核心载体:哈希表(Hash Table),字典本质就是封装好的哈希表,利用哈希函数实现O(1)快速查找

一、Python2字典底层结构

开放寻址法 + 固定结构Entry

1.存储单元Entry结构

Entry 数组就是哈希桶数组

哈希表底层主体是一维数组(哈希数组),数组里的每一个下标位置,就是一个 bucket(哈希桶 / 槽位)

2.冲突解决方式:开放寻址法(线性探测)

①根据 hash 算出桶下标i = hash % 桶总长度

②如果桶 i 为空:直接存入 Entry

③如果桶 i 被占用(冲突):i = (i+1) % 容量,向后依次找空位(线性探测)

3.扩容规则(根据具体版本而定)

扩容后桶数量翻倍,所有 key 重新计算哈希、重新安放位置

4.Python2字典缺陷

字典有序性无法保证, 扩容、新增元素后,Entry 存放位置会打乱,遍历顺序随机

5.删除机制

开放寻址不能直接清空桶, 如果直接删除 Entry,探测链条断裂,后续 key 找不到

解决方案:

设置哑标记(dummy),标记这个位置曾经有元素、现在被删除,可以写入新数据,但查找时不停止

二、Python3.6+

底层做结构拆分,两套数组:

1、哈希桶数组(indices 索引数组):只存下标数字(很小的整数数组,节省内存)
2、Entry 实体数组(entries):顺序保存真正的 hash、key、value

内存大幅节约:indices 只存整数,不再存完整 Entry
entries 数组按照插入顺序追加写入

http://www.jsqmd.com/news/1323753/

相关文章:

  • 别光调用API:Agent能干活,靠的不是大模型本身
  • 2026 广东耐高低温地坪漆源头厂家推荐:德奕希新材料 - 趣闻早乐评
  • 抖音批量下载终极指南:一键保存创作者全作品,高效管理内容资产
  • 阴阳师自动化脚本终极指南:告别重复操作,轻松实现游戏托管
  • 【AI面试防作弊技术解析】从身份核验、实时监考到AI辅助回答检测
  • 真的领到了8元无门槛。福利就在眼前
  • 代码写不活的组织:CoordClaw 为什么用 md 自然语言定义协作
  • DDoS攻击防御体系与实战防护方案解析
  • 考研复试冲刺17天高效备考全攻略
  • 5分钟快速上手:用DDrawCompat让老游戏在现代Windows上完美运行
  • 如何用TranslucentTB打造Windows任务栏的完美透明效果
  • 2026年AI论文写作工具评测与选择策略
  • 抖店一键下单如何开启自动售后处理?退货地址自动上传规则完整拆解讲解 - 电商分享
  • AI辅助科学问题求解:从“麦克斯韦猜想”看大语言模型在复杂推理中的实践
  • RabbitMQ集群部署与高可用架构实战指南
  • Lasso回归特征选择原理与Matlab实战指南
  • 2026 年通山专业的聚氨酯地坪漆销售厂家推荐,你家车间地面容易起灰?这玩意儿竟能十年不用翻新,还比瓷砖省一半钱?-蓝涂新材料 - 行业推荐官-2
  • 5分钟解锁Wand高级功能:开源增强工具终极指南
  • OSS Browser:阿里云对象存储的桌面管理神器,开发者如何高效管理云端文件?
  • 2026 年更新:济南正规的不锈钢花箱订制厂家找哪家,别再用塑料花箱了!它能扛住台风暴雨十年不烂,还能让小区颜值翻三倍 - 领域鉴赏官
  • 别再盲目接入AI搜索了!5个被低估的关键指标(上下文窗口利用率、引用溯源可信度、领域微调适配周期)决定项目成败
  • JWT单点登录在分布式系统中的实践与优化
  • Django高校就业舆情分析系统开发实践
  • 2026年智能抠图一键去背景用什么工具?网页手机电脑全场景实测 - AI测评专家
  • 摆脱重复办公操作,OpenClaw Windows本地 AI 助手搭建实操手册
  • Adobe-GenP通用补丁完整指南:如何高效激活Adobe全系列软件
  • Python实现机械轮廓参数化设计与可视化
  • 嵌入式处理器架构解析——龙芯LoongArch
  • 长沙出发西藏热门线路榜:这家15年五星级地接社凭什么拿下年度冠军?| 附:旅行社电话 - 西藏康泰旅行社
  • 2026 年更新:日照诚信的工地抑尘喷雾洒水车优质厂家哪家好,工地扬尘不用满天飞?这款“黑科技车”竟解决了工地的头疼难题,你见过吗-兴远达电动扫地车 - 企业官方推荐【认证】