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

如何获取字典内列表指定索引最大值对应的键,无需转换pandas dataframe

解决方案

核心思路是直接在原生字典结构上遍历查询,不需要做pandas转换,内存开销和执行效率都能满足大数据量的处理需求。

1. 全索引批量查询实现

如果需要获取所有索引位置对应的最大值key,用以下通用函数:

def get_max_key_per_index(input_dict):
    keys = list(input_dict.keys())
    # 取第一个key的列表长度作为全局长度,默认所有value列表长度一致
    list_length = len(input_dict[keys[0]])
    result = []
    for idx in range(list_length):
        max_val = -float('inf')
        max_key = None
        # 遍历所有key,对比当前索引位置的取值
        for k in keys:
            current_val = input_dict[k][idx]
            if current_val > max_val:
                max_val = current_val
                max_key = k
        result.append(max_key)
    return result

用你提供的示例字典调用该函数,返回结果为['NN', 'DT', 'DT', 'CC', 'DT', 'DT', 'DT', 'DT'],和你示例中的特征完全匹配:

  • 第1个位置(Python原生索引为0)最大值对应key为NN
  • 第4个位置(Python原生索引为3)最大值对应key为CC

注:Python默认索引从0开始计数,如果你使用的是从1开始的自然计数,对应取值时做+1/-1的偏移即可。


2. 单指定索引查询实现

如果只需要查询个别指定索引的结果,不需要全量遍历,用以下更高效的实现:

def get_max_key_for_target_index(input_dict, target_idx):
    max_val = -float('inf')
    max_key = None
    for k, val_list in input_dict.items():
        current_val = val_list[target_idx]
        if current_val > max_val:
            max_val = current_val
            max_key = k
    return max_key

适配你现有代码的写法

可以直接把函数嵌入你已有的代码片段中使用:

for i in range(len(test)):
    list1 = [[0 for x in range(len(test[i]))] for y in range(len(pos_list))]
    q = dict(zip(pos_list, list1))
    for j in range(len(test[i])):
        # 直接获取当前j索引对应的最大值key,后续接你自己的业务逻辑即可
        current_max_key = get_max_key_for_target_index(q, j)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:54:06