在Python中,当我们从字典中删除一个项目时,字典会调整大小还是重建字典表?从一些网站和博客中我了解到,当我们从字典中删除一个项目时,Python会在删除的键中插入一个虚拟键来填充字典条目,稍后,Python将通过调用一些清理函数来清理虚拟键。
有人可以指导任何一个好的网站或文档解释Python中字典的实现吗?
是的,当您删除键时,字典大小会发生变化,因为外部长度会发生变化。这意味着在循环遍历字典并删除循环内的键时将引发异常。
是的,一个哨兵值(名为dummy
) 用于替换已删除的键,以便对仍然存在的值进行哈希碰撞测试时仍然可以找到现有的值。
然而,该表是not重建;重建仅针对插入完成。是的,这意味着一个大字典表在进行大量删除后将继续使用一些内存;您可以通过用副本替换字典或插入新值直到表已满 2/3 来强制调整大小(此时调整大小可能最终会缩小表)。
如果您很好奇并且足够了解 C,请看一下C实现所有(有据可查的)详细信息。你也可以看这个Brandon Rhodes 的 Pycon 2010 演示关于 CPython 如何dict
作品,或拿起一份副本美丽的代码,其中包括由 Andrew Kuchling 撰写的关于实现的一章。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)