不要在迭代字典的同时修改字典

无论何时往字典里添加新的键,Python 解释器都可能做出为字典扩
容的决定。扩容导致的结果就是要新建一个更大的散列表,并把字
典里已有的元素添加到新表里。这个过程中可能会发生新的散列冲
突,导致新散列表中键的次序变化。要注意的是,上面提到的这些
变化是否会发生以及如何发生,都依赖于字典背后的具体实现,因
此你不能很自信地说自己知道背后发生了什么。如果你在迭代一个
字典的所有键的过程中同时对字典进行修改,那么这个循环很有可
能会跳过一些键——甚至是跳过那些字典中已经有的键。
由此可知,不要对字典同时进行迭代和修改。如果想扫描并修改一
个字典,最好分成两步来进行:首先对字典迭代,以得出需要添加
的内容,把这些内容放在一个新字典里;迭代结束之后再对原有字
典进行更新

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容