Python实现不区分大小写列表搜索及动态更新列表方案咨询
解决Python食物分类工具的两个问题
问题说明
原始代码存在两个核心问题:
- 搜索时严格区分大小写,输入
mango无法匹配列表中的Mango - 食物列表硬编码,添加新食物项必须手动修改代码,无法动态配置
修改后的代码
# 用字典存储分类信息,便于扩展 food_categories = { "Healthy": ["Apple", "Guava", "Mango", "watermelon"], "Unhealthy": ["Candy", "Nestle", "dairy milk"], "Don't eat daily": ["Pizza", "pani puri", "juice"] } def add_food_item(category, item): """添加新食物项到指定分类""" lower_item = item.lower() # 检查分类是否存在 if category in food_categories: # 避免重复添加相同食物(不区分大小写) if not any(food.lower() == lower_item for food in food_categories[category]): food_categories[category].append(item) print(f"已添加{item}到{category}分类") else: print(f"{item}已在{category}分类中") else: print(f"不存在{category}分类,可扩展创建新分类功能") def classify_food(item): """不区分大小写搜索并分类食物""" lower_item = item.lower() for category, items in food_categories.items(): # 统一转小写后匹配 if lower_item in [food.lower() for food in items]: print(category) return print("未找到对应分类") # 示例:动态添加新食物项 add_food_item("Healthy", "Banana") add_food_item("Unhealthy", "Chocolate Bar") # 交互逻辑 user_input = input('Enter the food item: ') classify_food(user_input)
代码解释
不区分大小写搜索:
- 将用户输入和列表内的食物项统一转为小写(
lower())后匹配,彻底解决大小写敏感问题 - 无论输入
Mango、mango还是MANGO,都能正确识别分类
- 将用户输入和列表内的食物项统一转为小写(
可配置列表:
- 用字典
food_categories替代独立列表,分类和食物的对应关系更清晰,便于管理 - 新增
add_food_item函数,支持动态添加食物到指定分类,无需手动修改原始代码 - 内置重复检查逻辑,避免同一食物被多次添加
- 用字典
扩展建议
如果需要支持创建新分类,可修改add_food_item函数,实现分类自动创建:
def add_food_item(category, item): lower_item = item.lower() # 分类不存在则自动创建 if category not in food_categories: food_categories[category] = [] print(f"已创建新分类{category}") # 检查重复 if not any(food.lower() == lower_item for food in food_categories[category]): food_categories[category].append(item) print(f"已添加{item}到{category}分类") else: print(f"{item}已在{category}分类中")
内容的提问来源于stack exchange,提问作者Pranav167
相关产品推荐
相关产品推荐

