在迭代字典时通常需要修改字典的内容。但是,在迭代期间直接删除项目可能会导致错误或不一致的结果。
在 Python 2 中,在迭代时使用 del 删除项目可能会导致问题,因为迭代器期望字典的大小保持不变。此行为会导致运行时错误。建议改用 keys 或 items 方法:
<code class="python">for k in mydict.keys(): if k == val: del mydict[k] # or for k, v in mydict.items(): if v == val: del mydict[k]</code>
在 Python 3 中,mydict.keys() 返回一个迭代器,而不是一个列表。在迭代期间修改字典将导致运行时错误。为了避免这种情况,请在使用 del 之前将迭代器转换为列表:
<code class="python">for k in list(mydict.keys()): if mydict[k] == 3: del mydict[k]</code>
另一种选择是使用 pop() 方法删除项目:
<code class="python">while mydict: k, v = mydict.popitem() if v == 3: mydict[k] = v # or for k in mydict.copy(): if mydict[k] == 3: mydict.pop(k)</code>
对于Python 3,建议使用带有列表转换的keys或items方法以避免运行时错误。对于Python 2,应该直接使用keys或items方法来安全地修改字典。
以上是在 Python 中迭代时如何安全地从字典中删除项目?的详细内容。更多信息请关注PHP中文网其他相关文章!