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

Python实现:根据列表元素筛选字典键值对

筛选字典中匹配指定列表元素的键值对

问题描述

给定如下字典和列表:

dict_ = {'one':['a','b','c','d','e','f'],
'two':['g','h','l','m'],
'three':['x','y','z'],
'four':['xx','yy']}

ls = ['a','x','c','h','l']

需要遍历字典的所有值列表,筛选出存在于ls中的元素,最终返回一个只包含有匹配元素的键值对的新字典,示例输出如下:

new_dict = {'one':['a','c'],'two':['h','l'], 'three':['x']} 

解决方案

使用Python字典推导式结合集合优化查找效率,代码实现如下:

dict_ = {'one':['a','b','c','d','e','f'],
'two':['g','h','l','m'],
'three':['x','y','z'],
'four':['xx','yy']}

ls = ['a','x','c','h','l']

# 将列表转为集合,提升元素查找效率
ls_set = set(ls)

# 生成目标字典:筛选匹配元素,并过滤无匹配的键
new_dict = {
    key: [item for item in value if item in ls_set]
    for key, value in dict_.items()
    if any(item in ls_set for item in value)
}

print(new_dict)

代码说明

  • 集合优化:将ls转换为集合ls_set,集合的成员检查操作(in)时间复杂度为O(1),远快于列表的O(n),元素较多时能显著提升性能。
  • 字典推导式:遍历原字典的每个键值对,对每个值列表筛选出存在于ls_set中的元素,生成新的子列表。
  • 过滤空值键:通过any(...)判断当前键的值列表是否有匹配元素,过滤掉没有任何匹配的键(如原字典中的'four')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 09:05:27