美文网首页
不要在迭代字典的同时修改字典

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

作者: 伍只蚊 | 来源:发表于2018-02-23 14:33 被阅读53次

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

    相关文章

      网友评论

          本文标题:不要在迭代字典的同时修改字典

          本文链接:https://www.haomeiwen.com/subject/gerxxftx.html