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

如何以dict2为结构合并dict1,生成目标嵌套字典?

按指定结构合并嵌套字典

输入字典

dict1

from datetime import date

dict1 = {
    '1': {
        'departure_date': date(2023, 6, 6),
        'airline': 'QR'
    },
    '2': {
        'departure_date': date(2023, 6, 7),
        'airline': 'QR'
    },
    '3': {
        'departure_date': date(2023, 6, 23),
        'airline': 'QR'
    },
    '4': {
        'departure_date': date(2023, 6, 24),
        'airline': 'QR'
    }
}

dict2

dict2 = {
    1: [1, 2],
    2: [1, 2]
}

期望输出

{
    '1': {
        '1': {
            'departure_date': date(2023, 6, 6),
            'airline': 'QR'
        },
        '2': {
            'departure_date': date(2023, 6, 7),
            'airline': 'QR'
        }
    },
    '2': {
        '1': {
            'departure_date': date(2023, 6, 23),
            'airline': 'QR'
        },
        '2': {
            'departure_date': date(2023, 6, 24),
            'airline': 'QR'
        }
    }
}

解决方案

通过遍历dict2的结构,按顺序从dict1中提取对应条目,构建目标嵌套字典。注意dict1的键为字符串,dict2的元素为整数,需做类型转换。

代码实现

from datetime import date
import pprint

dict1 = {
    '1': {'departure_date': date(2023, 6, 6), 'airline': 'QR'},
    '2': {'departure_date': date(2023, 6, 7), 'airline': 'QR'},
    '3': {'departure_date': date(2023, 6, 23), 'airline': 'QR'},
    '4': {'departure_date': date(2023, 6, 24), 'airline': 'QR'}
}

dict2 = {1: [1, 2], 2: [1, 2]}

result = {}
current_idx = 0

for main_key, sub_keys in dict2.items():
    sub_dict = {}
    for sub_key in sub_keys:
        dict1_key = str(current_idx + 1)
        sub_dict[str(sub_key)] = dict1[dict1_key]
        current_idx += 1
    result[str(main_key)] = sub_dict

pprint.pprint(result)

逻辑说明

  1. 初始化result存储最终结果,current_idx追踪dict1中已提取的条目位置。
  2. 遍历dict2的每个主键及对应子键列表:
    • 将子键转为字符串作为内层字典的键。
    • 按顺序从dict1中取出对应条目,存入内层字典。
    • 每提取一个条目,current_idx自增1,确保下一次取dict1的下一个条目。
  3. 将内层字典存入结果字典,主键转为字符串后作为外层键。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:55:33