You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Python字典列表中移除指定的键集合?

正确实现方案

方法一:嵌套字典推导式的列表推导

这是最直接的写法,对原列表里的每个字典,生成一个只包含不在移除列表l中的键值对的新字典:

ld = [{'a':1,'b':2,'c':9},{'a':1,'b':2,'c':10}]
l = ['a','c']
result = [{k: v for k, v in d.items() if k not in l} for d in ld]
print(result)
# 输出: [{'b':2},{'b':2}]

方法二:遍历删除指定键(修改原字典)

如果允许修改原列表中的字典,可以遍历每个字典,逐个移除指定的键:

ld = [{'a':1,'b':2,'c':9},{'a':1,'b':2,'c':10}]
l = ['a','c']
for d in ld:
    for k in l:
        d.pop(k, None)  # 用pop并指定默认值,避免键不存在时报错
print(ld)
# 输出: [{'b':2},{'b':2}]

原写法问题分析

你写的列表推导式:

result = [d for d in ld for k in d if k in l]

逻辑错误在于:遍历每个字典d后,又遍历d的每个键k,只要k在移除列表l中,就把**整个原字典d**加入结果列表。原每个字典里有2个符合条件的键(a和c),所以最终会生成重复的原字典,完全不符合预期。

内容的提问来源于stack exchange,提问作者moth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 16:05:20