解决字典按键索引取值时的'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
相关产品推荐
相关产品推荐

