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

为何numpy.argmax()无法正确处理Python中dict.values()的结果?

字典values()传入np.argmax时的索引错误问题

示例代码

import numpy as np

d = {'a': 10, 'b': 11, 'c':12}
print(d)  # 输出 {'a': 10, 'b': 11, 'c': 12}

问题现象

想获取d.values()中最大值的索引,结果不符合预期:

print(np.argmax(d.values()))  # 输出 0(正确索引应为2)

但直接传入列表时结果正常:

print(d.values())  # 输出 dict_values([10, 11, 12])
print(np.argmax([10, 11, 12]))  # 输出 2(正确)

原因说明

  • dict.values()返回的不是真正的列表,而是dict_values视图对象——它属于迭代器类的对象,并非NumPy能直接正确解析的序列类型。
  • NumPy的np.argmax在处理这类非序列迭代器时,不会遍历所有元素,而是将整个迭代器视为单个"元素",或者仅读取迭代器的第一个元素进行判断,因此错误返回了索引0。
  • 当传入真实列表[10,11,12]时,NumPy能识别这是一维序列,会遍历所有元素找到最大值对应的索引,结果自然正确。

解决办法

把dict_values转成列表后再传入:

print(np.argmax(list(d.values())))  # 输出 2(正确)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:57:08