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

如何在Python中统计二维列表中重复子列表的出现次数

报错原因

Python 字典的键必须是可哈希的不可变类型,而列表属于可变类型,无法作为字典的键使用。你之前仅将外层列表转为了元组,内层的子元素仍然是列表类型,所以还是触发了TypeError: unhashable type: 'list'报错。

修复方案

方案1:基于原有逻辑修改

只需将内层每个子列表转为元组作为临时计数的键,最终输出时再转回列表即可匹配你的期望格式:

def getDuplicatesWithCount(listOfElems):
    dictOfElems = dict()
    for elem in listOfElems:
        # 子列表转元组作为可哈希的临时键
        key = tuple(elem)
        if key in dictOfElems:
            dictOfElems[key] += 1
        else:
            dictOfElems[key] = 1  
    # 最终转换为列表为键的字典输出
    return {list(key): value for key, value in dictOfElems.items()}

list1 = [[1,2,1,2,1],[1,2,1,1,1],[1,2,1,1,1],[1,2,1,1,1],[1,2,1,2,1],[1,2,1,2,1],[1,2,1,1,1]]
dictOfElems = getDuplicatesWithCount(list1)
print(dictOfElems)

运行后输出结果为:{[1, 2, 1, 2, 1]: 3, [1, 2, 1, 1, 1]: 4},完全符合需求。

方案2:用标准库简化实现

可以直接使用collections.Counter完成计数逻辑,代码更简洁:

from collections import Counter

list1 = [[1,2,1,2,1],[1,2,1,1,1],[1,2,1,1,1],[1,2,1,1,1],[1,2,1,2,1],[1,2,1,2,1],[1,2,1,1,1]]
count_result = {list(k): v for k, v in Counter(tuple(elem) for elem in list1).items()}
print(count_result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:06:05