hash_dict

ソースコード

from titan_pylib.data_structures.safe_hash.hash_dict import HashDict

view on github

展開済みコード

 1# from titan_pylib.data_structures.safe_hash.hash_dict import HashDict
 2from typing import Any, Iterator
 3from random import Random
 4
 5
 6class HashDict:
 7
 8    _r = Random()
 9    _xor = _r.randrange(10000000, 1000000000)
10
11    def __init__(self) -> None:
12        self._data: dict[int, Any] = {}
13
14    def __setitem__(self, key: int, val: Any) -> None:
15        self._data[key ^ self._xor] = val
16
17    def __getitem__(self, key: int) -> Any:
18        return self._data[key ^ self._xor]
19
20    def __delitem__(self, key: int) -> None:
21        del self._data[key ^ self._xor]
22
23    def __contains__(self, key: int) -> bool:
24        return key ^ self._xor in self._data
25
26    def __len__(self) -> bool:
27        return len(self._data)
28
29    def keys(self) -> Iterator[int]:
30        return (k ^ self._xor for k in self._data.keys())
31
32    def values(self) -> Iterator[Any]:
33        return (v for v in self._data.values())
34
35    def items(self) -> Iterator[tuple[int, Any]]:
36        return ((k ^ self._xor, v) for k, v in self._data.items())
37
38    def __str__(self) -> str:
39        return "{" + ", ".join(f"{k}: {v}" for k, v in self.items()) + "}"
40
41    def __repr__(self):
42        return f"{self.__class__.__name__}({self})"

仕様

class HashDict[source]

Bases: object

items() Iterator[tuple[int, Any]][source]
keys() Iterator[int][source]
values() Iterator[Any][source]