code: def _delete_duplicates(l, keep_last):
      
      seen=set()
      result=[]
      if keep_last:           # reverse in & out, then keep first
          l.reverse()
      for i in l:
          try:
              if i not in seen:
                  result.append(i)
                  seen.add(i)
          except TypeError:
              # probably unhashable.  Just keep it.
              result.append(i)
      if keep_last:
          result.reverse()
      return result
docs: Delete duplicates from a sequence, keeping the first or last.