如何将周期键字典转换为Flight_idx与infeed_idx为键的查找字典
问题:将周期键字典转换为(Flight_idx, infeed_idx)复合键字典
原字典结构(以period为键):
import numpy as np original_dict = { 8: {'FlightName': ['Flightname612'], 'Flight_idx': np.array([268]), 'Baggage': np.array([149]), 'infeed_idx': [1]}, 9: {'FlightName': ['Flightname612'], 'Flight_idx': np.array([268]), 'Baggage': np.array([149]), 'infeed_idx': [2]}, 10: {'FlightName': ['Flightname353', 'Flightname394', 'Flightname612'], 'Flight_idx': np.array([9, 50, 268]), 'Baggage': np.array([21, 1, 149]), 'infeed_idx': [1, 1, 3]} }
需求:转换为以(Flight_idx, infeed_idx)为复合键、对应period为值的字典,预期输出:
{(268, 1): 8, (268, 2): 9, (9, 1): 10, (50, 1): 10, (268, 3): 10}
解法1:纯Python字典推导式
无需额外依赖,用嵌套推导式直接生成目标字典:
result = { (flight_idx, infeed): period for period, data in original_dict.items() for flight_idx, infeed in zip(data['Flight_idx'], data['infeed_idx']) }
遍历原字典的每个周期和对应数据,通过zip将Flight_idx数组与infeed_idx列表逐一对齐,生成复合键并映射到对应周期值。
解法2:使用Pandas实现
针对大规模数据,Pandas的结构化处理更直观:
import pandas as pd # 将每个周期的数据转为DataFrame并添加周期列,合并为完整数据集 df = pd.concat([ pd.DataFrame(data).assign(period=period) for period, data in original_dict.items() ], ignore_index=True) # 设置复合索引后转换为字典 result = df.set_index(['Flight_idx', 'infeed_idx'])['period'].to_dict()
先将分散的周期数据整合为结构化DataFrame,再通过复合索引直接映射出目标键值对。
内容的提问来源于stack exchange,提问作者Nora Seinfield
相关产品推荐
相关产品推荐

