docs: def sortedby(item_list, key_list, reverse=False):
      """ sorts ``item_list`` using key_list
  
      Args:
          list_ (list): list to sort
          key_list (list): list to sort by
          reverse (bool): sort order is descending (largest first)
                          if reverse is True else acscending (smallest first)
  
      Returns:
          list : ``list_`` sorted by the values of another ``list``. defaults to
          ascending order
  
      SeeAlso:
          sortedby2
  
      Examples:
          >>> # ENABLE_DOCTEST
          >>> import utool
          >>> list_    = [1, 2, 3, 4, 5]
          >>> key_list = [2, 5, 3, 1, 5]
          >>> result = utool.sortedby(list_, key_list, reverse=True)
          >>> print(result)
          [5, 2, 3, 1, 4]
  
      """
      assert len(item_list) == len(key_list), (
          'Expected same len. Got: %r != %r' % (len(item_list), len(key_list)))
      sorted_list = [item for (key, item) in
                     sorted(list(zip(key_list, item_list)), reverse=reverse)]
      return sorted_list