如何以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)
逻辑说明
- 初始化
result存储最终结果,current_idx追踪dict1中已提取的条目位置。 - 遍历dict2的每个主键及对应子键列表:
- 将子键转为字符串作为内层字典的键。
- 按顺序从dict1中取出对应条目,存入内层字典。
- 每提取一个条目,
current_idx自增1,确保下一次取dict1的下一个条目。
- 将内层字典存入结果字典,主键转为字符串后作为外层键。
内容的提问来源于stack exchange,提问作者Duvan Smuts
相关产品推荐
相关产品推荐

