Python如何根据字符串列表过滤键值均唯一的字典
Python 键值对子串匹配字典过滤实现
直接通过字典推导式结合子串匹配即可完成需求,无需额外依赖,兼容非字符串类型的值场景。
实现代码
thisdict = { "brand": "Ford", "model": "Mustang", "year": 1964} filt = ["rand", "ar"] filtered_dict = { key: val for key, val in thisdict.items() # 只要键或值(转字符串后)包含任意一个过滤子串就保留 if any(substr in str(key) or substr in str(val) for substr in filt) } print(filtered_dict) # 输出结果:{'brand': 'Ford', 'year': 1964}
逻辑说明
- 遍历原字典的每一组键值对,逐组做匹配校验
- 用
any()做短路匹配:只要当前键值对命中任意一个过滤子串,就终止当前组的后续匹配,减少不必要的计算 - 对键、值统一做
str()类型转换:兼容值为数字、布尔值等非字符串类型的场景,避免直接做子串匹配触发类型错误 - 匹配规则完全对齐需求:键包含任意过滤子串、或值包含任意过滤子串的键值对都会被保留,无匹配的键值对被剔除
补充:如果你的字典所有键、值均为字符串类型,可以去掉
str()转换步骤,减少微小的性能开销。
内容的提问来源于stack exchange,提问作者user4611642
相关产品推荐
相关产品推荐

