You need to enable JavaScript to run this app. Python:按数组a的字典分组规则生成数组b的对应元素字典
优惠活动
大模型
产品
解决方案
定价
更多

Python:按数组a的字典分组规则生成数组b的对应元素字典

实现逻辑

整个需求的核心是基于数组位置的对应替换,不需要改动原字典的key划分、分组数量,只需要完成两步操作:

  • 先建立数组a的元素与数组b同索引位置元素的映射关系,保证每个a元素能找到自己对应的b值
  • 遍历原字典的所有分组,把分组内的a元素逐一替换为映射对应的b值,全程保留原字典的结构
代码实现

首先修正原提问里的常见写法坑:不要用dict作为变量名,会覆盖Python内置的字典类型方法,实际写代码时建议使用语义化的变量名:

# 前置定义
arr_a = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
arr_b = [1, 2, 3, 4, 5, 6, 7]
original_group = {
    'key1': ['a', 'c', 'e'],
    'key2': ['f', 'g'],
    'key3': ['b', 'd']
}

第一步,用zip配对两个数组,生成a元素到对应b值的映射表:

# 建立位置映射表
element_map = {a_elem: b_elem for a_elem, b_elem in zip(arr_a, arr_b)}

第二步,基于原字典结构逐组替换元素,生成目标字典:

# 生成结构完全一致的新字典
target_dict = {
    group_key: [element_map[item] for item in group_val]
    for group_key, group_val in original_group.items()
}

运行后得到的结果完全符合预期:

{'key1': [1, 3, 5], 'key2': [6, 7], 'key3': [2, 4]}
注意事项
  • 该方法适用于arr_a无重复元素、且arr_a和arr_b严格等长的场景;如果arr_a存在重复元素,会取最后一次出现位置对应的b值,此时需要调整逻辑为:直接记录每个元素在arr_a中的原始索引,替换时通过索引直接取arr_b的对应值,避免重复元素导致的映射错位
  • 替换过程不会修改原字典的结构,原分组的key、列表长度、元素顺序都会完全保留,仅替换列表内的取值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 06:06:03