Python:如何根据字典值查找对应字典?物品属性查询求助
解决Python库存物品按名称查找问题
实现步骤
- 获取用户输入的物品名称,用
strip()去除前后空白字符优化输入体验 - 遍历
inventory列表中的每个字典元素,比对字典的Name字段与用户输入 - 找到匹配项后,遍历字典键值对,跳过
Name字段输出其他属性;未找到则给出提示
完整示例代码
# 已定义的库存列表(示例数据) inventory = [ {"ID": "ID001", "Name": "Apple", "Price": 5, "Stock": 100}, {"ID": "ID002", "Name": "Banana", "Price": 3, "Stock": 150}, {"ID": "ID003", "Name": "Orange", "Price": 4, "Stock": 80} ] # 获取用户输入 user_input = input("请输入物品名称:").strip() # 查找匹配的物品 target_item = None for item in inventory: # 若需忽略大小写匹配,可改为:item["Name"].lower() == user_input.lower() if item["Name"] == user_input: target_item = item break # 输出结果 if target_item: print("物品详情:") for key, val in target_item.items(): if key != "Name": print(f"{key}: {val}") else: print(f"未找到名称为「{user_input}」的物品")
扩展优化
- 大小写不敏感匹配:将名称统一转为小写(或大写)后比对,避免因输入大小写差异导致查找失败
- 多同名物品处理:若库存存在多个同名物品,可改用列表收集所有匹配项,再批量输出:
# 收集所有匹配项 matched_items = [item for item in inventory if item["Name"].lower() == user_input.lower()] if matched_items: print(f"找到{len(matched_items)}个匹配物品:") for idx, item in enumerate(matched_items, 1): print(f"\n第{idx}个物品:") for key, val in item.items(): if key != "Name": print(f"{key}: {val}") else: print(f"未找到名称为「{user_input}」的物品")
内容的提问来源于stack exchange,提问作者Calvin Monty
相关产品推荐
相关产品推荐

