pyiter.distinct

 1from typing import Any, Callable, Iterable, Iterator, Optional, Set
 2from .transform import Transform, T
 3
 4
 5class DistinctTransform(Transform[T, T]):
 6    """
 7    A transform that removes duplicates from an iterable.
 8    """
 9
10    def __init__(self, iter: Iterable[T], key_selector: Optional[Callable[[T], Any]] = None):
11        super().__init__(iter)
12        self.key_selector = key_selector
13
14    def __do_iter__(self) -> Iterator[T]:
15        seen: Set[Any] = set()
16        for e in self.iter:
17            k = self.key_selector(e) if self.key_selector else e
18            if k not in seen:
19                seen.add(k)
20                yield e
class DistinctTransform(pyiter.transform.Transform[~T, ~T]):
 6class DistinctTransform(Transform[T, T]):
 7    """
 8    A transform that removes duplicates from an iterable.
 9    """
10
11    def __init__(self, iter: Iterable[T], key_selector: Optional[Callable[[T], Any]] = None):
12        super().__init__(iter)
13        self.key_selector = key_selector
14
15    def __do_iter__(self) -> Iterator[T]:
16        seen: Set[Any] = set()
17        for e in self.iter:
18            k = self.key_selector(e) if self.key_selector else e
19            if k not in seen:
20                seen.add(k)
21                yield e

A transform that removes duplicates from an iterable.

key_selector