<分区>
如果键的值低于某个阈值,我会尝试从字典中删除项目。举个简单的例子来说明我的意思:
my_dict = {'blue': 1, 'red': 2, 'yellow': 3, 'green': 4}
for color in my_dict:
threshold_value = 3
if my_dict[color] < threshold_value:
del my_dict[color]
print(my_dict)
现在,我收到一个 RuntimeError: dictionary changed size during iteration
错误。那里没有什么大惊喜。我发布这个问题的原因是:
找出是否有不需要创建新字典(仅包含值 >= 阈值的键)的优雅解决方案。
在这里尝试理解 Python 的基本原理。我自己读它的方式是:“转到第一个键。那个键的值 < x 吗?如果是 - 删除这个键:值项并继续字典中的下一个键,如果不是 - 继续什么都不做的下一个键”。换句话说,以前的 key 历史上发生的事情不应该影响我接下来的去向。无论过去如何,我都期待着下一个项目。 我知道这很有趣(有些人可能会说这很愚蠢,我会告诉你)但是 Python 对这个循环的“思考方式”是什么?为什么它不起作用? Python 将如何大声朗读它?只是想更好地理解语言......