如何从Python字典中移除指定键?求更优实现方案
问题分析与优化方案
首先你原来的代码有两个明显问题:
b = b.pop(t, None)完全错误——dict.pop()返回的是对应键的值,不是修改后的字典,第一次循环后b会变成字符串"something",第二次循环直接报错(字符串没有pop方法)。- 循环里直接
return会让循环只执行一次就退出,根本没处理完数组里的所有元素。
下面给你两种更优的实现方式,按需选择:
方式一:直接修改原字典(内存高效)
如果不需要保留原字典的内容,直接遍历数组里的键用pop移除即可,这是最省内存的方式:
a = ["one", "two"] b = {"one": "something", "two": "something2", "three": "something3"} for key in a: b.pop(key, None) # 第二个参数None表示键不存在时不报错 # 此时b就是 {'three': 'something3'}
方式二:创建新字典(保留原字典)
如果要保留原字典,用字典推导式过滤掉不需要的键,同时把数组转成集合能提升查找效率(尤其是数组元素较多时):
a = ["one", "two"] b = {"one": "something", "two": "something2", "three": "something3"} exclude_keys = set(a) new_b = {k: v for k, v in b.items() if k not in exclude_keys} # new_b 就是 {'three': 'something3'},原字典b不受影响
内容的提问来源于stack exchange,提问作者Siddhant Singh
相关产品推荐
相关产品推荐

