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

Python中如何用新列表重构含字典的商品列表?

重构饮品列表的实现方案

问题描述

现有一个饮品数据列表products,每个元素是包含name、price、stock字段的字典,结构示例如下:

products = [
    {
        "name": "coke",
        "price": 3,
        "stock": 10
    },
    {
        "name": "bepis",
        "price": 2,
        "stock": 232
    },
    {
        "name": "fanta",
        "price": 2,
        "stock": 144
    }
]

现在有三个关联的新列表:

names = ["mdew", "water", "tea", "tapwater"]  # 饮品名称
prices = ["3", "10", "3", "40"]  # 对应价格(字符串格式)
stocks = ["10", "10", "10"]  # 对应库存,最后一项tapwater无库存,因此少一个元素

需要基于这三个列表,生成和products结构完全一致的新数据列表。

实现思路

核心是将三个列表的对应元素配对,同时处理两个关键点:

  1. 库存列表长度不足,需要给最后一个元素补充合理的默认值(比如0,符合原始数据的数字类型)
  2. 将价格、库存的字符串转为整数,和原始结构保持一致

代码实现

names = ["mdew", "water", "tea", "tapwater"]
prices = ["3", "10", "3", "40"]
stocks = ["10", "10", "10"]

# 补充库存列表,给tapwater设置默认库存0
stocks_extended = stocks + [0]

# 遍历配对元素,生成目标列表
new_products = []
for name, price_str, stock in zip(names, prices, stocks_extended):
    new_product = {
        "name": name,
        "price": int(price_str),
        "stock": int(stock) if isinstance(stock, str) else stock
    }
    new_products.append(new_product)

# 输出结果
print(new_products)

运行结果

生成的新列表结构与products完全匹配:

[
    {'name': 'mdew', 'price': 3, 'stock': 10},
    {'name': 'water', 'price': 10, 'stock': 10},
    {'name': 'tea', 'price': 3, 'stock': 10},
    {'name': 'tapwater', 'price': 40, 'stock': 0}
]

可选调整

如果业务中“无库存”需要用None表示,只需修改库存补充的代码:

stocks_extended = stocks + [None]

此时生成的tapwater库存为None,符合需求。

内容的提问来源于stack exchange,提问作者electricmanh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:40:32