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

VS Code Python计算列表众数报错TypeError: unhashable type: 'list'如何解决

错误修复方案

错误根因

TypeError: unhashable type: 'list'触发原因是statistics.mode方法要求传入序列的元素为可哈希类型(数值、字符串、元组等),而你代码中生成的bv序列元素为列表类型,列表本身不可哈希,因此调用统计众数时触发报错。

代码问题点

你在处理mat文件读取结果时做了多余的嵌套转换:

  • 从loadmat读取的table['Y']本身为numpy二维数组,你用列表推导将其转为了嵌套列表结构,每个元素依然是子列表
  • bv = list(zip(con_list))这一步完全冗余,进一步把嵌套结构封装为元组套列表的格式,和你需要的一维数值序列完全不符

修复代码

直接将读取的二维数组展平为一维数值序列即可:

import numpy as np
import statistics
from scipy.io import loadmat

filename = "YYY.mat"
table = loadmat(filename)
# 直接展平二维数组为一维数值列表
bv = table['Y'].flatten().tolist()

# 统计逻辑可正常运行
bv_stat = [
    0, min(bv), max(bv), np.mean(bv), statistics.mode(bv),
    np.quantile(bv, .025), np.quantile(bv, .25),
    np.quantile(bv, .50), np.quantile(bv, .75), np.quantile(bv, .975)
]

补充说明

如果你的mat文件读取结果存在特殊嵌套结构,只需保证最终传入statistics.mode的序列中不存在列表、字典这类不可哈希元素即可。之前转换set、tuple无效的原因是你只修改了外层容器类型,没有处理内层的列表元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:45:02