如何高效移除嵌套字典中列表内字典的指定键sub-key1?
高效移除嵌套字典中的指定键
方法1:列表推导式 + 字典推导式
这是纯Python环境下最简洁高效的写法,依托Python底层优化的推导式,比普通for循环执行效率更高:
data = {"key": [{"sub-key1": "value1", "sub-key2": "value2"}, {"sub-key1": "value3", "sub-key3": "value4"}]} # 批量移除每个子字典中的sub-key1 data["key"] = [{k: v for k, v in d.items() if k != "sub-key1"} for d in data["key"]]
方法2:原地修改(内存效率最优)
如果不需要保留原字典的副本,直接在原对象上修改能大幅减少内存开销,适合处理大规模数据集:
for d in data["key"]: d.pop("sub-key1", None) # 传入None作为默认值,避免键不存在时抛出异常
方法3:函数式风格写法(map配合lambda)
习惯函数式编程的话,可以用map()批量处理子字典,效率和列表推导式相近:
data["key"] = list(map(lambda d: {k: v for k, v in d.items() if k != "sub-key1"}, data["key"]))
效率对比
- 原地修改的
pop()方法内存效率最高,无需生成新字典对象; - 列表推导式和
map()函数的CPU效率优于普通for循环,因为Python对内置推导式和函数做了底层优化; - DataFrame方案虽然直观,但会引入额外的库开销,纯字典结构的处理场景下,原生Python方法效率更优。
内容的提问来源于stack exchange,提问作者user22449270
相关产品推荐
相关产品推荐

