com*_*tor 2 python dictionary set python-2.7 python-internals
谁能告诉我set和dict的内部实现在python中有何不同?他们在后台使用相同的数据结构吗?
++从理论上讲,可以使用dict来实现集合功能。
在CPython中,集合和字典使用相同的基本数据结构。设置对它的调整略有不同,但是就像字典一样,它基本上是一个哈希表。
您可以看一下C代码中的实现细节:setobject.c和dictobject.c; 实现非常接近;该setobject.c实现是作为dictobject.c原始版本的副本开始的。dictobject.c有更多的实现说明和跟踪调用,但是核心功能的实际实现仅在细节上有所不同。
最明显的区别是,哈希表中的键不像字典中那样用于引用值,因此setentry结构仅具有缓存的哈希和键,该dictentry结构添加了值指针。
在拥有内建函数之前set,我们有一个sets模块,这是一个纯Python实现,它使用dict对象将设置值作为键来跟踪。在该sets模块可用之前的Python版本中,我们只是这样做:使用dict带有键的对象作为设置值,以跟踪唯一的无序值。
| 归档时间: |
|
| 查看次数: |
749 次 |
| 最近记录: |