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

将两个numpy数组合并为字典时报unhashable type错误如何解决

错误原因

Python 字典的键必须是**可哈希(hashable)**的不可变类型,遍历little_X_test得到的每一行A本质是numpy.ndarray类型,属于可变对象,没有固定哈希值,直接作为键就会抛出对应类型错误。

解决方法

你预期的键是数组行元素组成的元组,只需要把每一行的numpy数组转换为不可变的tuple类型即可。

修改后代码

import numpy as np

little_X_test= np.array([[7.9, 3.8, 6.4, 2],
 [5.2, 4.1, 1.5, 0.1],
 [6.9, 3.1, 5.1, 2.3]])
little_y_test= np.array([2, 0, 2])

d = {}
for A, B in zip(little_X_test, little_y_test):
    # 将numpy数组行转为元组后再作为键
    d[tuple(A)] = B

也可以用更简洁的字典推导式实现相同效果:

d = {tuple(A): B for A, B in zip(little_X_test, little_y_test)}

最终生成的字典完全符合你要求的格式:{(7.9, 3.8, 6.4, 2.0): 2, (5.2, 4.1, 1.5, 0.1): 0, (6.9, 3.1, 5.1, 2.3): 2}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:48:07