Skip to content

SortedKeysView

Bases: BaseSortedView[_K_co, Any], PyoKeysView[_K_co], PyoSequence[_K_co], Generic[_K_co]


              flowchart TD
              pyochain.collections._sorted._views.SortedKeysView[SortedKeysView]
              pyochain.collections._sorted._views.BaseSortedView[BaseSortedView]
              pyochain.abc._views.PyoKeysView[PyoKeysView]
              pyochain.abc._views.PyoMappingView[PyoMappingView]
              pyochain.abc._set.PyoSet[PyoSet]
              pyochain.abc._sequences.PyoSequence[PyoSequence]
              pyochain.abc._sequences.PyoReversible[PyoReversible]
              pyochain.abc._collection.PyoCollection[PyoCollection]
              pyochain.abc._iterable.PyoIterable[PyoIterable]
              pyochain.abc._collection.PyoContainer[PyoContainer]
              pyochain.abc._collection.PyoSized[PyoSized]
              pyochain.abc._mixins.Checkable[Checkable]
              pyochain.abc._mixins.Fluent[Fluent]
              pyochain.abc._mixins.Pipe[Pipe]
              pyochain.abc._mixins.Tap[Tap]

                              pyochain.collections._sorted._views.BaseSortedView --> pyochain.collections._sorted._views.SortedKeysView
                
                pyochain.abc._views.PyoKeysView --> pyochain.collections._sorted._views.SortedKeysView
                                pyochain.abc._views.PyoMappingView --> pyochain.abc._views.PyoKeysView
                                pyochain.abc._collection.PyoSized --> pyochain.abc._views.PyoMappingView
                                pyochain.abc._mixins.Checkable --> pyochain.abc._collection.PyoSized
                


                pyochain.abc._set.PyoSet --> pyochain.abc._views.PyoKeysView
                                pyochain.abc._collection.PyoCollection --> pyochain.abc._set.PyoSet
                                pyochain.abc._iterable.PyoIterable --> pyochain.abc._collection.PyoCollection
                                pyochain.abc._mixins.Checkable --> pyochain.abc._iterable.PyoIterable
                
                pyochain.abc._mixins.Fluent --> pyochain.abc._iterable.PyoIterable
                                pyochain.abc._mixins.Pipe --> pyochain.abc._mixins.Fluent
                
                pyochain.abc._mixins.Tap --> pyochain.abc._mixins.Fluent
                


                pyochain.abc._collection.PyoContainer --> pyochain.abc._collection.PyoCollection
                                pyochain.abc._mixins.Checkable --> pyochain.abc._collection.PyoContainer
                

                pyochain.abc._collection.PyoSized --> pyochain.abc._collection.PyoCollection
                                pyochain.abc._mixins.Checkable --> pyochain.abc._collection.PyoSized
                




                pyochain.abc._sequences.PyoSequence --> pyochain.collections._sorted._views.SortedKeysView
                                pyochain.abc._sequences.PyoReversible --> pyochain.abc._sequences.PyoSequence
                                pyochain.abc._iterable.PyoIterable --> pyochain.abc._sequences.PyoReversible
                                pyochain.abc._mixins.Checkable --> pyochain.abc._iterable.PyoIterable
                
                pyochain.abc._mixins.Fluent --> pyochain.abc._iterable.PyoIterable
                                pyochain.abc._mixins.Pipe --> pyochain.abc._mixins.Fluent
                
                pyochain.abc._mixins.Tap --> pyochain.abc._mixins.Fluent
                



                pyochain.abc._collection.PyoCollection --> pyochain.abc._sequences.PyoSequence
                                pyochain.abc._iterable.PyoIterable --> pyochain.abc._collection.PyoCollection
                                pyochain.abc._mixins.Checkable --> pyochain.abc._iterable.PyoIterable
                
                pyochain.abc._mixins.Fluent --> pyochain.abc._iterable.PyoIterable
                                pyochain.abc._mixins.Pipe --> pyochain.abc._mixins.Fluent
                
                pyochain.abc._mixins.Tap --> pyochain.abc._mixins.Fluent
                


                pyochain.abc._collection.PyoContainer --> pyochain.abc._collection.PyoCollection
                                pyochain.abc._mixins.Checkable --> pyochain.abc._collection.PyoContainer
                

                pyochain.abc._collection.PyoSized --> pyochain.abc._collection.PyoCollection
                                pyochain.abc._mixins.Checkable --> pyochain.abc._collection.PyoSized
                





              click pyochain.collections._sorted._views.SortedKeysView href "" "pyochain.collections._sorted._views.SortedKeysView"
              click pyochain.collections._sorted._views.BaseSortedView href "" "pyochain.collections._sorted._views.BaseSortedView"
              click pyochain.abc._views.PyoKeysView href "" "pyochain.abc._views.PyoKeysView"
              click pyochain.abc._views.PyoMappingView href "" "pyochain.abc._views.PyoMappingView"
              click pyochain.abc._set.PyoSet href "" "pyochain.abc._set.PyoSet"
              click pyochain.abc._sequences.PyoSequence href "" "pyochain.abc._sequences.PyoSequence"
              click pyochain.abc._sequences.PyoReversible href "" "pyochain.abc._sequences.PyoReversible"
              click pyochain.abc._collection.PyoCollection href "" "pyochain.abc._collection.PyoCollection"
              click pyochain.abc._iterable.PyoIterable href "" "pyochain.abc._iterable.PyoIterable"
              click pyochain.abc._collection.PyoContainer href "" "pyochain.abc._collection.PyoContainer"
              click pyochain.abc._collection.PyoSized href "" "pyochain.abc._collection.PyoSized"
              click pyochain.abc._mixins.Checkable href "" "pyochain.abc._mixins.Checkable"
              click pyochain.abc._mixins.Fluent href "" "pyochain.abc._mixins.Fluent"
              click pyochain.abc._mixins.Pipe href "" "pyochain.abc._mixins.Pipe"
              click pyochain.abc._mixins.Tap href "" "pyochain.abc._mixins.Tap"
            

Sorted keys view is a dynamic view of the sorted dict's keys.

When the sorted dict's keys change, the view reflects those changes.

The keys view implements the set and sequence abstract base classes.

Example
from pyochain import Vec, Set, Seq
from pyochain.collections import SortedDict

data = Seq("a", "b", "c")

skv = (
    data
    .iter()
    .enumerate()
    .map_star(lambda i, x: (x, i))
    .collect(SortedDict)
    .keys()
)
assert skv == Set(data)
assert skv[0] == "a"
assert skv[-1] == "c"
assert skv[:] == Vec(data)
assert repr(skv) == "SortedKeysView(SortedDict({'a': 0, 'b': 1, 'c': 2}))"
Source code in pyochain/collections/_sorted/_views.pyi
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
class SortedKeysView(
    BaseSortedView[_K_co, Any],
    PyoKeysView[_K_co],
    PyoSequence[_K_co],
    Generic[_K_co],  # ruff: ignore[non-pep695-generic-class]
):
    """Sorted keys view is a dynamic view of the sorted dict's keys.

    When the sorted dict's keys change, the view reflects those changes.

    The keys view implements the set and sequence abstract base classes.

    Example:
        ```python
        from pyochain import Vec, Set, Seq
        from pyochain.collections import SortedDict

        data = Seq("a", "b", "c")

        skv = (
            data
            .iter()
            .enumerate()
            .map_star(lambda i, x: (x, i))
            .collect(SortedDict)
            .keys()
        )
        assert skv == Set(data)
        assert skv[0] == "a"
        assert skv[-1] == "c"
        assert skv[:] == Vec(data)
        assert repr(skv) == "SortedKeysView(SortedDict({'a': 0, 'b': 1, 'c': 2}))"
        ```
    """

    @overload
    def __getitem__(self, index: int) -> _K_co: ...
    @overload
    def __getitem__(self, index: slice) -> Vec[_K_co]: ...
    @override
    def __getitem__(self, index: int | slice) -> _K_co | Vec[_K_co]:
        """Lookup key at `index` in sorted keys views.

        ``skv.__getitem__(index)`` <==> ``skv[index]``

        Supports slicing.

        Runtime complexity: `O(log(n))` -- approximate.

        Args:
            index (int | slice): integer or slice for indexing

        Returns:
            _K_co | Vec[_K_co]: key or list of keys

        Examples:
            ```python
            from pyochain import Ok, Err, Vec
            from pyochain.collections import SortedDict
            import pytest

            skv = SortedDict(a=1, b=2, c=3).keys()
            assert skv[0] == "a"
            assert skv[-1] == "c"
            assert skv[:] == Vec("a", "b", "c")
            with pytest.raises(IndexError):
                skv[100]
            ```
        """

    @classmethod
    @override
    # pyrefly: ignore [bad-override]
    def _from_iterable(cls, it: Iterable[_K_co]) -> SortedSet[_K_co]:  # pyright: ignore[reportIncompatibleMethodOverride]
        ...

__getitem__(index)

__getitem__(index: int) -> _K_co
__getitem__(index: slice) -> Vec[_K_co]

Lookup key at index in sorted keys views.

skv.__getitem__(index) <==> skv[index]

Supports slicing.

Runtime complexity: O(log(n)) -- approximate.

Parameters:

Name Type Description Default
index int | slice

integer or slice for indexing

required

Returns:

Type Description
_K_co | Vec[_K_co]

_K_co | Vec[_K_co]: key or list of keys

Examples:

from pyochain import Ok, Err, Vec
from pyochain.collections import SortedDict
import pytest

skv = SortedDict(a=1, b=2, c=3).keys()
assert skv[0] == "a"
assert skv[-1] == "c"
assert skv[:] == Vec("a", "b", "c")
with pytest.raises(IndexError):
    skv[100]
Source code in pyochain/collections/_sorted/_views.pyi
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
@override
def __getitem__(self, index: int | slice) -> _K_co | Vec[_K_co]:
    """Lookup key at `index` in sorted keys views.

    ``skv.__getitem__(index)`` <==> ``skv[index]``

    Supports slicing.

    Runtime complexity: `O(log(n))` -- approximate.

    Args:
        index (int | slice): integer or slice for indexing

    Returns:
        _K_co | Vec[_K_co]: key or list of keys

    Examples:
        ```python
        from pyochain import Ok, Err, Vec
        from pyochain.collections import SortedDict
        import pytest

        skv = SortedDict(a=1, b=2, c=3).keys()
        assert skv[0] == "a"
        assert skv[-1] == "c"
        assert skv[:] == Vec("a", "b", "c")
        with pytest.raises(IndexError):
            skv[100]
        ```
    """