docs: def key_by(self, to_key: Callable[[T], str]) -> 'TDict[T]':
          """
          :param to_key: value -> key
          Usage:
  
              >>> TList(['a1', 'b2', 'c3']).key_by(lambda x: x[0]).to_json()
              '{"a": "a1","b": "b2","c": "c3"}'
              >>> TList([1, 2, 3, 4, 5]).key_by(lambda x: x % 2).to_json()
              '{"0": 4,"1": 5}'
          """
          return TDict({to_key(x): x for x in self})