hash_set

ソースコード

from titan_pylib.data_structures.safe_hash.hash_set import HashSet

view on github

展開済みコード

 1# from titan_pylib.data_structures.safe_hash.hash_set import HashSet
 2from typing import Iterable
 3from random import Random
 4
 5
 6class HashSet:
 7
 8    _r = Random()
 9    _xor = _r.randrange(10000000, 1000000000)
10
11    def __init__(self, a: Iterable[int] = []):
12        self._data: set[int] = set(x ^ self._xor for x in a)
13
14    def add(self, key: int) -> None:
15        self._data.add(key ^ self._xor)
16
17    def discard(self, key: int) -> None:
18        self._data.discard(key ^ self._xor)
19
20    def remove(self, key: int) -> None:
21        self._data.remove(key ^ self._xor)
22
23    def __contains__(self, key: int):
24        return key ^ self._xor in self._data
25
26    def __len__(self):
27        return len(self._data)
28
29    def __iter__(self):
30        return (k ^ self._xor for k in self._data.__iter__())
31
32    def __str__(self):
33        return "{" + ", ".join(sorted(map(str, self))) + "}"
34
35    def __repr__(self):
36        return f"{self.__class__.__name__}({self})"

仕様

class HashSet(a: Iterable[int] = [])[source]

Bases: object

add(key: int) None[source]
discard(key: int) None[source]
remove(key: int) None[source]