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

Python如何对字典列表按键匹配值校验后筛选删除元素

字典列表筛选实现

完整可运行代码

# 原始数据
myd = [
    {
        'name': 'Abc',
        'id': '101',
        'status': 'Success',
        'lastModifiedDate': '2022-02-14 12:25:32:013302'
    },
    {
        'name': 'Abc',
        'id': '101',
        'status': 'Failed',
        'lastModifiedDate': '2022-02-21 12:25:32:013302'
    },
    {
        'name': 'def',
        'id': '102',
        'status': 'Failed',
        'lastModifiedDate': '2022-02-14 12:25:32:013302'
    },
    {
        'name': 'ghi',
        'id': '103',
        'status': 'Success',
        'lastModifiedDate': '2022-02-14 12:25:32:013302'
    },
    {
        'name': 'ijk',
        'id': '110',
        'status': 'Failed',
        'lastModifiedDate': '2022-02-14 12:25:32:013302'
    },
    {
        'name': 'ijk',
        'id': '110',
        'status': 'Failed',
        'lastModifiedDate': '2022-02-14 12:25:32:013302'
    }
]

# 1. 去除完全重复的条目
unique_list = [dict(t) for t in {tuple(d.items()) for d in myd}]

# 2. 标记所有存在Success状态的id
invalid_ids = set()
for item in unique_list:
    if item['status'] == 'Success':
        invalid_ids.add(item['id'])

# 3. 筛选最终结果:状态为Failed,且对应id没有Success记录
final_result = [
    item for item in unique_list
    if item['status'] == 'Failed' and item['id'] not in invalid_ids
]

逻辑说明

  • 去重部分直接复用了你已写的逻辑,利用集合元素唯一的特性自动剔除完全一致的字典项,无需额外判断
  • 用set存储存在成功记录的id,成员判断效率远高于列表,数据量大时性能优势明显
  • 最终通过列表推导式一次性完成过滤,逻辑分层清晰,后续调整规则也方便

输出结果

运行代码后得到的final_result和期望输出完全匹配:

[
    {
        'name': 'def',
        'id': '102',
        'status': 'Failed',
        'lastModifiedDate': '2022-02-14 12:25:32:013302'
    },
    {
        'name': 'ijk',
        'id': '110',
        'status': 'Failed',
        'lastModifiedDate': '2022-02-14 12:25:32:013302'
    }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:36:14