Python类方法按类型查询条目仅返回单条结果的代码修正咨询
问题根因
现有代码无法返回全部结果的核心问题有两处:
- 循环逻辑里只要命中第一个匹配项就直接执行
return,函数直接终止,后续的匹配项根本不会被遍历到 - 每次匹配到内容时都会重新创建只包含当前单个物品的列表,没有做结果累加,且元组里写的
bool是布尔类型本身,不是代表「是否查到结果」的实际布尔值
修改思路
- 在循环启动前先初始化空列表,专门用来收集所有符合类型要求的物品名称
- 遍历全量物品时,把类型匹配的物品名追加到结果列表中,不在循环内部提前返回
- 等所有物品遍历完成后,以「结果列表是否非空」作为布尔判断值,和结果列表组装成元组返回即可
修正后的代码实现
def get_item(self, types1): matched_names = [] # 提前把目标类型转小写,避免循环里重复做相同的小写转换操作 target_type = types1.lower() for item in self.all_items: if item.toy_type.lower() == target_type: matched_names.append(item.name) # 遍历完全量物品后再统一返回结果 return (bool(matched_names), matched_names)
返回值说明
- 当没有匹配到对应类型的物品时,返回
(False, []) - 当匹配到任意数量的同类型物品时,返回
(True, [物品1名称, 物品2名称, ...]),会包含所有符合条件的条目,不会出现漏返回的情况
内容的提问来源于stack exchange,提问作者python_newbie
相关产品推荐
相关产品推荐

