概要
結論としては独自クラス内に hash と eq メソッドを定義することです
環境
- Python 3.10.2
サンプルコード
class User():
def __init__(self,
name: str,
age: int) -> None:
self.name = name
self.age = age
def __eq__(self, other) -> bool:
return (self.name, self.age) == (other.name, other.age)
def __hash__(self) -> int:
return hash((self.name, self.age))
u1 = User("hawk", 10)
u2 = User("hawk", 20)
u3 = User("hawk", 30)
u4 = User("snowlog", 10)
u5 = User("snowlog", 20)
u6 = User("snowlog", 30)
u7 = User("hawk", 20)
u8 = User("snowlog", 30)
users = [u1, u2, u3, u4, u5, u6, u7, u8]
print(len(users)) # => 8
print(users)
unique_users = list(set(users))
print(len(unique_users)) # => 6
print(unique_users)
0 件のコメント:
コメントを投稿