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

如何将周期键字典转换为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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:40:30