【发布时间】:2021-11-23 12:28:11
【问题描述】:
我有这个代码:
from dataclasses import dataclass
from typing import List
@dataclass(eq=True, frozen=True)
class TestClass:
field1: str
field_list: List[str]
duplicate_list = [TestClass("foo", ["bar", "cat"]), TestClass("foo", ["bar", "cat"]), TestClass("foo", ["bar", "caz"])]
unique_list = remove_duplicates(duplicate_list)
def remove_duplicates(duplicate_list: List[TestClass]) -> List[TestClass]:
return list(set(duplicate_list))
现在我想检查列表中的重复项。我试图将列表转换为如上所示的集合。我也尝试过使用
return list( dict.fromkeys(duplicate_list) )
这两种方法都不起作用,因为我的课程包含一个列表。因此,dataclass 模块生成的__hash__ 函数不起作用。它给出了错误:unhashable type: 'list'
删除重复的数据类元素的正确方法是什么?我需要编写自定义__hash__ 函数吗?或者是否可以用某种形式的不可变列表替换列表?
【问题讨论】:
-
回答你的最后一个问题:要么工作。哪个是正确的取决于上下文。