docs: def group_by(self, to_key):
          """
          :param to_key:
          :type to_key: T -> unicode
          :rtype: TDict[TList[T]]
  
          Usage:
  
              >>> TList([1, 2, 3, 4, 5]).group_by(lambda x: x % 2).to_json()
              '{"0": [2,4],"1": [1,3,5]}'
          """
          ret = TDict()
          for v in self:
              k = to_key(v)
              ret.setdefault(k, TList())
              ret[k].append(v)
          return ret