安全删除字典元素需避免边遍历边修改原结构,推荐用字典推导式重建;也可遍历keys列表副本、预收集键后pop、或用filter+dict构造,各适用不同场景。
遍历字典时直接删元素会报 RuntimeError: dictionary changed size during iteration,因为 Python 禁止在迭代原字典的同时修改其大小。安全删除的关键是“不边遍历边改原结构”。下面几种写法都可靠,适用场景略有不同。
本质是创建新字典,过滤掉不需要的键值对,原字典被覆盖或赋给新变量。代码简洁、可读性强,且完全规避运行时风险。
my_dict = {k: v for k, v in my_dict.items() if 条件}
把 dict.keys() 转成 list 再遍历,因 list 是静态快照,删原字典不影响循环过程。

for k in list(my_dict): if 条件: del my_dict[k] 或 my_dict.pop(k, None)
先扫描一遍,把要删的键存进一个临时列表,再单独遍历该列表执行 pop()。
pop(key, default) 自带容错,即使键意外不存在也不会报错借助 filter() 和生成器表达式,再转为字典。虽不如推导式常用,但体现函数式思路。
my_dict = dict(filter(lambda kv: kv[1] >= 75, my_dict.items()))