使用纯 Python 代码来模拟实现 Python 字典

在前面几篇文章中,我们一起了解了 Python 字典的概念、用法和实现原理。今天,我们试着用 Python 代码来实现一个具有全功能的字典类,从而加强理解。 【基本思路】 首先,我们要确认字典应具备的基本功能: 存储 key 唯一的键值对 可通过 key 来访问键值对,且时间效率较高 可迭代 支持 keys()、value() 和 item() 等 dict 支持的基本方法 可获取元素个数,可以字

详情

Python 源码解读系列文章

《读源码学 Python》是本站推出的一系列 优质的 Python 底层实现相关文章。 为方便大家阅读,特将已发布的文章链接整理如下: 从 Python 列表的特性来探究其底层实现机制 从 Python 源码来分析列表的 resize 机制 从源码剖析 Python 字典的底层实现 详细介绍 Python 字典使用的哈希表   【原创不易,欢迎转载,请注明出处,抄袭必究!】 欢迎关注本站

详情

详细介绍 Python 字典使用的哈希表

我们在上一篇文章中分析了 CPython 中是如何实现 dict 的。由于涉及内容较多,我可能并没有描述清楚 dict 所用的哈希表的具体结构。 如果你也对此有疑问,不妨来看一下本文对哈希表结构的进一步分析。 【dict 哈希表】 先看一张重新制作的图。 这张图描述的就是 CPython 中 PyDictKeysObject 结构中的成员变量 dk_indices。它的数据类型是 char[],表

详情

从源码剖析 Python 字典的底层实现

在《RealPython 基础教程:Python 字典用法详解》这篇文章中,我们介绍了 dict 的特性: dict 是存储键值对的关联容器 dict 中的 key 是唯一的 可使用 dict[key] 语法来快速访问 dict 中的元素 Python 3.6 之后的版本会保持元素添加到 dict 中的顺序 那么,Python 底层是如何支撑这些特性的呢?其运行效率如何? 我们今天就来简单探索一下

详情

RealPython 基础教程:Python 字典用法详解

在连续编写了5篇和 list 相关的文章之后,我们继续《RealPython 基础教程》这个系列。 今天,我们要学习的数据结构是字典(dict)。 dict 是一个包含若干对象的集合。它和 list 有以下共同的特征: 它们都是可变的 它们都是动态的,可根据需要自行伸缩大小。 它们都可以嵌套使用。一个 list 可包含另一个 list,一个 dict 也可以包含另一个 dict。dict 也可以包

详情

一文掌握 Python 迭代器的原理

理解迭代器是每个严肃的 Python 使用者学习 Python 道路上的里程碑。本文将从零开始,一步一步带你认识 Python 中基于类的迭代器。 相较于其他编程语言,Python 的语法是优美而清晰的。比如 for-in 循环这种极具 Python 特色的代码,让你读起来感觉就像读一个英语句子一样。它很能体现 Python 的美感。 numbers = [1, 2, 3] for n in nu

详情

从 Python 源码来分析列表的 resize 机制

Python 列表底层是通过存储对象指针的变长数组来实现的,使用数组带来的好处就是可以通过索引随机访问列表中的元素。 然而,由于 list 属于可变数据类型,我们可以动态地在 list 中增减元素,当底层数组不足以容纳新元素时,就要调整其大小了。这正是“变长”的含义所在。 那么,list 使用的变长数组是如何调整其大小呢?我们通过阅读 Python 源码来做下简单分析。 【列表初始内存分配机制】

详情

RealPython 基础教程系列文章目录

《RealPython 基础教程》是本站推出的一系列 优质的 Python 基础文章。 为方便大家阅读,特将已发布的文章链接整理如下: Python 基本数据类型 一文理解 Python 中的变量 Python 运算符和表达式 Python 字符串详解 Python 中的列表和元组 Python 字典用法详解   【原创不易,欢迎转载,请注明出处,抄袭必究!】 欢迎关注本站公众号【pyt

详情

Python 列表的应用场景有哪些?你使用对了吗?

我们在前几篇文章中依次介绍了列表的特性和用法、列表推导式、列表的底层实现。今天来聊一聊列表在实际开发中的应用场景。   在开发中,选用何种数据结构是由我们面对的数据特征和业务场景决定的。 数据是单个的还是批量的,是小规模的还是海量的? 数据是独立的还是彼此关联的? 数据的生成是随机的还是有先后顺序的? 数据的用途是什么?会不会频繁读写?只读多还是修改多? 数据是否应用于多线程环境? &#

详情

从 Python 列表的特性来探究其底层实现机制

列表(list)是 Python 中一个非常重要且常见的数据结构,它有很多易用的特性:可索引([index]),可切片([start, end, step]),能对其中的元素进行增(append、insert、extend)删(pop、remove)改操作。 如果你同时熟悉其他编程语言,比如 C++,你会觉得 Python 列表和 C++ STL 提供的 list 在操作上有些相似。 是的,它们都

详情