Python字典过滤函数默认返回空字典,求问题排查与修正
问题分析与解决方法
原代码的问题
- 循环覆盖错误:每次遍历字典键时,都会无条件覆盖
res的值。如果最后一个键不匹配name,之前找到的匹配结果会被清空,最终返回空字典。 - 匹配逻辑不符需求:原代码只判断键完全等于
name,但需求是name作为子串存在于键中(即name是键的一部分)。 - 初始化逻辑混乱:
res初始化为None,后续却赋值为字典类型,逻辑不统一。
修正后的函数实现
def extractKey(dictionary, name): res = {} for key in dictionary: # 检查name是否是当前键的子串 if name in key: res[key] = dictionary[key] return res
代码说明
- 初始化
res为空字典,避免循环中被错误覆盖。 - 遍历字典的每个键,通过
name in key判断name是否是键的一部分,完全符合需求。 - 所有匹配的键值对都会被加入
res,循环结束后直接返回:如果没有匹配项,返回空字典;否则返回包含所有匹配条目的字典。
测试示例
test_dict = {"apple": 1, "pineapple": 2, "banana": 3} print(extractKey(test_dict, "apple")) # 输出: {'apple': 1, 'pineapple': 2} print(extractKey(test_dict, "orange")) # 输出: {} print(extractKey(test_dict, "ana")) # 输出: {'banana': 3}
内容的提问来源于stack exchange,提问作者Avinash Jha
相关产品推荐
相关产品推荐

