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

解决字典按键索引取值时的'numpy.ndarray'不可调用错误

解决思路:TypeError: 'numpy.ndarray' object is not callable 当尝试访问字典键时

这个错误的核心原因很明确:你调用的positions.keys()并不是Python字典的keys()方法——而是一个numpy数组,而数组是不能像函数那样加括号调用的。下面分步骤帮你排查和解决:

1. 先确认positions的真实类型

你提到它的字典项是dict_items([(3.0, 0), (2.0, 23), (1.0, 30), (4.0, 41)]),但有可能positions本身并不是标准的Python字典,而是一个numpy数组(或者其他numpy相关结构)。先运行这段代码确认:

import numpy as np
print(type(positions))
print(positions)

如果输出是<class 'numpy.ndarray'>,那你需要先把它转换成普通字典。

2. 把numpy数组转换为Python字典

如果positions是numpy数组(比如是由键值对组成的二维数组),可以直接用dict()函数转换:

# 转换为标准字典
positions_dict = dict(positions)

之后再执行你想要的操作就不会报错了:

# 获取第一个键(注意:Python 3.7+字典是有序的,顺序和你定义的一致)
first_key = list(positions_dict.keys()).pop(0)
# 获取对应的值
corresponding_value = positions_dict[first_key]
print(corresponding_value)  # 输出 0

⚠️ 注意:pop(0)会从键列表中移除第一个键,如果只是想获取第一个键而不移除,直接用list(positions_dict.keys())[0]更合适。

3. 排查变量名冲突(少见但可能)

如果positions确实是标准字典,但还是报错,那可能是你之前定义了一个名为keys的numpy数组,覆盖了字典的keys()方法。比如:

# 错误示例:这个变量名会覆盖字典的keys方法
keys = np.array([1,2,3])

遇到这种情况,只需要把这个numpy数组的变量名改成其他(比如key_array),就能恢复字典keys()方法的正常调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:30:51