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

使用Counter统计字典值时出现unhashable type: 'list'报错如何解决

错误原因

Counter统计频率时要求被统计的元素是可哈希类型,而你字典的value都是list类型,列表属于可变不可哈希类型,因此直接传入EYES.values()会触发TypeError: unhashable type: 'list'报错。
你之前修改的Counter(map(tuple(EYES.values())))存在语法错误,map()的第一个参数需要是转换函数,第二个参数才是待转换的可迭代对象,直接调用tuple(EYES.values())不符合语法要求。

修复方案

你可以根据自己的统计需求选择对应方案:

方案1:统计完整列表的出现频率

如果需要把每个value的完整列表作为统计单元,先将所有列表转为不可变、可哈希的tuple类型再统计:

from collections import Counter

def frequency(EYES):
    Eyes_freq_dict = Counter(tuple(v) for v in EYES.values())
    return Eyes_freq_dict

EYEScounter = frequency(df_dict)
EYESlist = list(EYEScounter.values())

方案2:统计列表内单个元素的出现频率

如果需要统计所有value列表中各个独立元素的总出现频率,先把嵌套的列表打平再统计:

from collections import Counter
import itertools

def frequency(EYES):
    # 打平所有嵌套的value列表
    all_elements = itertools.chain.from_iterable(EYES.values())
    Eyes_freq_dict = Counter(all_elements)
    return Eyes_freq_dict

EYEScounter = frequency(df_dict)
EYESlist = list(EYEScounter.values())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:54:04