code: def join_impl(other, join_type, sequence):
      
      if join_type == "inner":
          return inner_join_impl(other, sequence)
      seq_dict = {}
      for element in sequence:
          seq_dict[element[0]] = element[1]
      seq_kv = seq_dict
      other_kv = dict(other)
      if join_type == "left":
          keys = seq_kv.keys()
      elif join_type == "right":
          keys = other_kv.keys()
      elif join_type == "outer":
          keys = set(list(seq_kv.keys()) + list(other_kv.keys()))
      else:
          raise TypeError("Wrong type of join specified")
      result = {}
      for k in keys:
          result[k] = (seq_kv.get(k), other_kv.get(k))
      return six.viewitems(result)
docs: Implementation for join_t
      :param other: other sequence to join with
      :param join_type: join type (inner, outer, left, right)
      :param sequence: first sequence to join with
      :return: joined sequence