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

Python中根据查找字典键值为列表索引分配标签的优化方案咨询

需求说明
  • 输入索引列表:[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
  • 查找字典m定义如下:
m={ 
    "fir": [0,1,3,4,5],
    "sec": [2,7,12],
    "thr": [6,11],
    "fou": [8,9,10,13]
}
  • 预期输出标签列表:['fir', 'fir', 'sec', 'fir', 'fir', 'fir', 'thr', 'sec', 'fou', 'fou', 'fou', 'thr', 'sec', 'fou']

现有嵌套循环的实现可以得到正确结果,但存在执行效率低的问题:每次索引匹配都要遍历所有key,且in列表操作本身是线性查找,数据量越大性能损耗越明显。

优化实现方案

最优的思路是提前构建索引到标签的反向映射字典,仅需两次线性遍历即可得到结果,时间复杂度从原方案的O(nk)降到O(n)*(n为索引总数,k为字典key数量),实现代码如下:

m = {
    "fir": [0,1,3,4,5],
    "sec": [2,7,12],
    "thr": [6,11],
    "fou": [8,9,10,13]
}

# 构建反向查找映射:key为索引,value为对应标签
idx_label_map = {}
for label, idx_list in m.items():
    for idx in idx_list:
        idx_label_map[idx] = label

# 按索引顺序直接取值生成结果
result = [idx_label_map[i] for i in range(len(idx_label_map))]

该方案代码可读性更高,执行效率远高于嵌套循环,尤其适合索引数量较大的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:27:03