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

将CSV文件转集合去重后转列表时报TypeError: unhashable type: 'list'如何解决

错误原因

set 要求存入的元素必须是可哈希的不可变类型,csv.reader 迭代返回的每一行内容是 list 类型,列表是可变对象,不支持哈希,所以直接把 reader 对象转 set 时会抛出该错误。

修复代码(整行去重)

将每一行的列表转为可哈希的元组后再存入set,去重后如果需要列表格式可以再转换回来:

import csv

with open('f.csv', 'r', encoding='utf-8') as csv_file:
    reader = csv.reader(csv_file)
    # 行转元组后存入set去重
    unique_items = set(tuple(row) for row in reader)
    # 按需转回列表格式
    unique_list = [list(item) for item in unique_items]
    print(unique_list)

保留原文件行顺序的去重方案

如果你需要去重后仍然保持原文件的行出现顺序(Python 3.7+ 版本适用),可以用字典键唯一的特性实现,不需要转set:

import csv

with open('f.csv', 'r', encoding='utf-8') as csv_file:
    reader = csv.reader(csv_file)
    unique_list = list({tuple(row): list(row) for row in reader}.values())
    print(unique_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:21:03