在python中,当我们从字典中删除一个项目时,字典是否会调整大小或重建字典表.从一些网站和博客我学到的是,当我们从字典中删除一个项目时,python将一个虚拟键插入到已删除的键中以填充字典条目,稍后一个python将通过调用一些清理函数来清理虚拟键.
有人可以指导任何好的网站或文档,在python下解释字典实现.
是的,当你删除键时,字典大小会改变,因为向外长度会改变.这意味着在删除循环内的键时循环遍历字典时将抛出异常.
是的,使用sentinel值(命名dummy
)替换已删除的键,以便仍然存在的值的哈希冲突测试仍然可以找到现有值.
但是,表没有重建; 重建仅适用于插入.是的,这意味着一个大字典表会在经过大量删除后继续使用一些内存; 你可以通过用副本替换字典来强制调整大小,或者通过插入新值直到表格为2/3rds满(此时调整大小最终会缩小表格).
如果你很好奇,并且足够了解C,请查看所有(详细记录的)详细信息的C实现.您还可以观看Brandon Rhodes关于CPython如何dict
工作的Pycon 2010演示文稿,或者阅读Beautiful Code的副本,其中包括Andrew Kuchling撰写的有关实现的章节.
归档时间: |
|
查看次数: |
1326 次 |
最近记录: |