在 Python 中迭代时如何安全地从字典中删除项目?

Barbara Streisand
发布: 2024-11-02 19:22:30
原创
790 人浏览过

How Can I Safely Delete Items From a Dictionary While Iterating in Python?

在迭代期间从字典中删除项目

在迭代字典时通常需要修改字典的内容。但是,在迭代期间直接删除项目可能会导致错误或不一致的结果。

使用 del 进行迭代 (Python 2)

在 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>
登录后复制

使用 del 进行迭代 (Python 3 )

在 Python 3 中,mydict.keys() 返回一个迭代器,而不是一个列表。在迭代期间修改字典将导致运行时错误。为了避免这种情况,请在使用 del 之前将迭代器转换为列表:

<code class="python">for k in list(mydict.keys()):
    if mydict[k] == 3:
        del mydict[k]</code>
登录后复制

使用 pop()

另一种选择是使用 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!