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

如何以最Pythonic方式移除列表中对应另一列表grade为Unavailable的字典

符合Python风格的解决方案

首先,先修正示例代码里的语法问题:字典的键id和grade需要加引号,否则会被当作未定义变量报错。接下来用高效且简洁的方式实现需求:

# 修正后的示例数据
l1 = [{'id': '1', 'grade': 'A'}, {'id': '2', 'grade': 'B'}, {'id': '3', 'grade': 'A'}]
l2 = [{'id': '1', 'grade': 'A'}, {'id': '2', 'grade': 'B'}, {'id': '3', 'grade': 'Unavailable'}]

# 先提取l2中所有grade为'Unavailable'的id,存入集合(集合查找效率远高于列表)
unavailable_ids = {item['id'] for item in l2 if item['grade'] == 'Unavailable'}

# 用列表推导式过滤l1,保留id不在排除列表中的项
filtered_l1 = [item for item in l1 if item['id'] not in unavailable_ids]

print(filtered_l1)
# 输出: [{'id': '1', 'grade': 'A'}, {'id': '2', 'grade': 'B'}]

关键说明

  • 用集合推导式生成unavailable_ids,让后续的id匹配操作时间复杂度降到O(1),数据量越大,比直接遍历l2做匹配的效率提升越明显。
  • 列表推导式是Python中处理序列过滤最符合风格的写法,代码简洁、可读性强,执行效率也优于普通循环+条件判断的写法。

内容的提问来源于stack exchange,提问作者J. Donič

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:20:42