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

如何基于列表条件筛选字典元素,生成符合要求的新字典?

问题描述

现有如下结构的字典:

features_id = {
    'id1': ['a', 'b', 'c', 'd'],
    'id2': ['c', 'd'],
    'id3': ['a', 'e', 'f', 'd', 'g', 'k'],
    # 更多键值对...
}

同时有一个用于过滤的列表:

list_of_values = ['a', 'c']

需要生成新字典,每个键对应的列表仅保留存在于list_of_values中的元素,最终结构如下:

new_dict = {
    'id1': ['a', 'c'],
    'id2': ['c'],
    'id3': ['a'],
    # 更多键值对...
}
解决方案

可以用字典推导式快速实现,为了提升查找效率,建议先把list_of_values转换成集合(集合的成员查询时间复杂度是O(1),比列表的O(n)更高效,尤其当过滤列表元素较多时)。

代码示例:

features_id = {
    'id1': ['a', 'b', 'c', 'd'],
    'id2': ['c', 'd'],
    'id3': ['a', 'e', 'f', 'd', 'g', 'k'],
}
list_of_values = ['a', 'c']

# 转换为集合提升查询效率
value_set = set(list_of_values)
# 字典推导式生成新字典
new_dict = {key: [item for item in values if item in value_set] for key, values in features_id.items()}

print(new_dict)

运行结果:

{'id1': ['a', 'c'], 'id2': ['c'], 'id3': ['a']}

逻辑说明

  1. 将list_of_values转为集合value_set,优化元素查询速度;
  2. 遍历原字典features_id的每一组键值对;
  3. 对每个键对应的列表,用列表推导式筛选出存在于value_set中的元素;
  4. 将筛选后的列表与原键配对,构建成新字典。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:50:24