如何用Python将三个列表合并为嵌套字典?技术实现求助
解决Python合并三个列表为嵌套字典的问题
首先明确:字典的键是唯一的,你之前想要的{"price": 1, "price": 2, "price": 3}结构根本行不通——重复的键会被后面的值覆盖,这个思路从一开始就错了。
直接看正确实现方式,核心是用zip()把三个列表的对应元素打包,逐个生成嵌套字典:
完整代码实现
# 获取用户输入并分割为列表 item_input = input("Enter products separated by space: ") price_input = input("Enter prices separated by space: ") stock_input = input("Enter stocks separated by space: ") items = item_input.split() # 将价格转为float,库存转为int(可根据实际需求调整类型) prices = [float(p) for p in price_input.split()] stocks = [int(s) for s in stock_input.split()] # 生成目标嵌套字典 products = {} for item, price, stock in zip(items, prices, stocks): products[item] = {"price": price, "stock": stock} # 打印结果 print(products)
代码说明
- 类型转换:用户输入分割后得到的是字符串列表,必须把价格转成
float、库存转成int,否则字典里会存字符串,不符合你要的数值格式。 - zip打包:
zip(items, prices, stocks)会把三个列表中索引相同的元素打包成元组,比如第一个元组是(items[0], prices[0], stocks[0]),正好对应一个商品的名称、价格、库存。 - 生成嵌套字典:遍历每个打包后的元组,把商品名作为外层字典的键,内层是包含
price和stock的子字典。
示例运行
如果输入:
apple banana cake 3.5 6.82 23 134 52 5
输出会是:
{'apple': {'price': 3.5, 'stock': 134}, 'banana': {'price': 6.82, 'stock': 52}, 'cake': {'price': 23.0, 'stock': 5}}
补充:用字典推导式简化代码
如果想更简洁,可以用字典推导式一行生成:
products = {item: {"price": price, "stock": stock} for item, price, stock in zip(items, prices, stocks)}
内容的提问来源于stack exchange,提问作者Goh Kian Seen
相关产品推荐
相关产品推荐

