hash_dict¶
ソースコード¶
from titan_pylib.data_structures.safe_hash.hash_dict import HashDict
展開済みコード¶
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})"