如何获取列表指定值并自动将商品价格上调5.5%?
解决库存价格上调及指定值更新问题
先提个小细节:原代码里第一个商品字典的键是"Stock:"(多了个冒号),建议改成"Stock"保持统一,避免后续操作出错。
一、批量将所有商品Price上调5.5%
要实现批量调价,只需遍历stock列表里的每个商品字典,对"Price"字段的值乘以1.055(即原价的105.5%)即可。同时优化了展示函数,让输出更规整:
修改后的完整代码:
print("Hello! We have the following products in stock: ") print(" ") stock = [ {"Product#1": "Donuts", "Price": 17.00, "Stock": 10}, # 修正Stock键名 {"Product#2": "Triki Trakets", "Price": 11.50, "Stock": 15}, {"Product#3": "Sausages", "Price": 52.00, "Stock": 7}, {"Product#4": "Cheese", "Price": 65.00, "Stock": 8}, {"Product#5": "Coke", "Price": 10.50, "Stock": 25}, {"Product#6": "Gatorade", "Price": 12.00, "Stock": 15} ] def display_stock(stock_list): for product in stock_list: for key, value in product.items(): print(f"{key}: {value}") print("___") # 展示原始库存 display_stock(stock) print(" ") print("Prices after a 5.5% increase:") print(" ") # 批量上调价格,保留两位小数 price_increase_rate = 1.055 for product in stock: product["Price"] = round(product["Price"] * price_increase_rate, 2) # 展示调价后的库存 display_stock(stock)
二、获取并更新列表中的指定值
如果要针对特定商品操作,可通过遍历匹配的方式实现:
1. 根据商品名称查找并更新
比如把"Coke"的价格再上调10%:
target_name = "Coke" for product in stock: for name in product.values(): if name == target_name: product["Price"] = round(product["Price"] * 1.1, 2) break
2. 根据产品编号(字典键)查找并更新
比如修改"Product#3"的库存:
target_id = "Product#3" for product in stock: if target_id in product: product["Stock"] = 10 # 把库存改为10 break
3. 高效操作方案(重构数据结构)
如果频繁需要按名称/编号查找,建议把stock重构为字典,查找更新会更高效:
# 转为以商品名称为键的字典 stock_dict = {product[next(iter(product.keys()))]: product for product in stock} # 直接修改Donuts的价格 stock_dict["Donuts"]["Price"] = round(stock_dict["Donuts"]["Price"] * 1.05, 2)
内容的提问来源于stack exchange,提问作者Guillermo Madrigal
相关产品推荐
相关产品推荐

