You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取列表指定值并自动将商品价格上调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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:40:50