【发布时间】:2011-07-20 02:04:29
【问题描述】:
在 Python 中迭代字典时从字典中删除项目是否合法?
例如:
for k, v in mydict.iteritems():
if k == val:
del mydict[k]
这个想法是从字典中删除不满足特定条件的元素,而不是创建一个新字典,它是被迭代的字典的子集。
这是一个好的解决方案吗?有没有更优雅/高效的方法?
【问题讨论】:
-
一个相关问题的答案非常有趣:stackoverflow.com/questions/9023078/….
-
本可以轻松尝试。如果失败,则不合法。
-
@Trilarion 一个人可以很容易地尝试... 并且很容易学到任何有价值的东西。如果它成功了,它不一定是合法的。边缘案例和意想不到的警告比比皆是。这个问题对于所有想要成为 Python 的人来说都是非常重要的。挥手解雇,命令“一个人可以轻松尝试!”是无益的,与 stackoverflow 查询的求知精神背道而驰。
-
在仔细阅读max 的related question 之后,我必须同意。您可能只想仔细阅读这个令人不安的深入问题及其精心编写的答案。你的 Pythonic 头脑会被炸毁。
-
@CecilCurry 如果我没记错的话,在展示它之前为自己测试一个想法有点符合 stackoverflow 的精神。这就是我想要传达的全部内容。抱歉,如果因此而造成任何干扰。我也认为这是一个很好的问题,并没有否决它。我最喜欢Jochen Ritzel的回答。我认为在第二步中删除要简单得多时,不需要立即删除所有这些内容。在我看来,这应该是首选方式。
标签: scripting dictionary python