code: def sort_together(iterables, key_list=(0,), reverse=False):
      
      return list(zip(*sorted(zip(*iterables),
                              key=itemgetter(*key_list),
                              reverse=reverse)))
docs: Return the input iterables sorted together, with *key_list* as the
      priority for sorting. All iterables are trimmed to the length of the
      shortest one.
  
      This can be used like the sorting function in a spreadsheet. If each
      iterable represents a column of data, the key list determines which
      columns are used for sorting.
  
      By default, all iterables are sorted using the ``0``-th iterable::
  
          >>> iterables = [(4, 3, 2, 1), ('a', 'b', 'c', 'd')]
          >>> sort_together(iterables)
          [(1, 2, 3, 4), ('d', 'c', 'b', 'a')]
  
      Set a different key list to sort according to another iterable.
      Specifying multiple keys dictates how ties are broken::
  
          >>> iterables = [(3, 1, 2), (0, 1, 0), ('c', 'b', 'a')]
          >>> sort_together(iterables, key_list=(1, 2))
          [(2, 3, 1), (0, 0, 1), ('a', 'c', 'b')]
  
      Set *reverse* to ``True`` to sort in descending order.
  
          >>> sort_together([(1, 2, 3), ('c', 'b', 'a')], reverse=True)
          [(3, 2, 1), ('a', 'b', 'c')]