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

Python中如何基于两个关联字典生成箱内商品映射字典?

解决方案:将订单-箱映射转换为箱-商品映射

实现思路

  • 初始化空字典存储最终的箱-商品对应关系
  • 遍历订单到箱的映射,逐个处理每个订单
  • 根据订单号从商品字典中取出对应商品列表
  • 将商品列表合并到对应箱号的列表中,若箱号未在结果字典中则先初始化空列表

代码实现

方法1:普通字典循环实现

orders_to_bins = {1: 'a', 2: 'a', 3: 'b'}
items = {
    1: [49,50,51,62],
    2: [60,63,64,65],
    3: [70,71,72,74]
}

items_in_bins = {}
for order_num, bin_id in orders_to_bins.items():
    order_items = items[order_num]
    if bin_id not in items_in_bins:
        items_in_bins[bin_id] = []
    items_in_bins[bin_id].extend(order_items)

print(items_in_bins)
# 输出:{'a': [49, 50, 51, 62, 60, 63, 64, 65], 'b': [70, 71, 72, 74]}

方法2:使用collections.defaultdict简化代码

defaultdict会自动为不存在的键创建默认空列表,省去手动判断的步骤:

from collections import defaultdict

orders_to_bins = {1: 'a', 2: 'a', 3: 'b'}
items = {
    1: [49,50,51,62],
    2: [60,63,64,65],
    3: [70,71,72,74]
}

items_in_bins = defaultdict(list)
for order_num, bin_id in orders_to_bins.items():
    items_in_bins[bin_id].extend(items[order_num])

# 可选:将defaultdict转换为普通字典
items_in_bins = dict(items_in_bins)

print(items_in_bins)
# 输出:{'a': [49, 50, 51, 62, 60, 63, 64, 65], 'b': [70, 71, 72, 74]}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:17:23