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

VS Code中Python调用statistics.mode报unhashable type: 'list'错误如何解决

报错原因与解决方案

错误根因

  • 报错TypeError: unhashable type: 'list'是因为statistics.mode底层依赖collections.Counter做元素频次统计,Counter要求被统计的元素必须是可哈希类型(比如数值、字符串、元组,列表属于不可哈希类型)
  • 你代码中bv = list(zip(con_list))操作输出的每个元素是包裹了子列表的单元素元组,后续仅转换外层容器为元组的操作没有处理内部嵌套的列表,因此传入mode的序列元素依然包含不可哈希的列表类型
  • mean、quantile等函数不需要对元素做哈希计数,仅提取数值计算,因此不会触发该报错

解决方案

直接将嵌套的数据列表打平为一维纯数值序列后再计算众数即可,示例代码如下:

import statistics
from scipy.io import loadmat

# 原有文件读取逻辑保留
filename = "Demand (MWh)/WB_" + combo_jahr.get() + ".mat"
filename = r"{}".format(filename)
demand_table = loadmat(filename)
con_list = [[element for element in upperElement] for upperElement in demand_table['WB']]

# 新增:打平嵌套列表为一维数值序列
flat_demand = [num for sublist in con_list for num in sublist]
# 计算众数
mode_result = statistics.mode(flat_demand)

如果数据存在多个众数,Python 3.8+版本可以使用statistics.multimode获取全部众数,也可以自行通过Counter统计:

from collections import Counter

cnt = Counter(flat_demand)
max_frequency = max(cnt.values())
all_mode = [k for k, v in cnt.items() if v == max_frequency]

内容的提问来源于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.29 18:06:00