title: Rearranging list based on order of another list
body: <p>I am sure this question has possibly been asked before but I can't seem to find the correct answer. If I have two lists</p>
  
  <pre><code>_list1 = ["keyName", "test1", "test2"]
  _list2 = ["keyName", "test2", "test1"]
  </code></pre>
  
  <p>I am trying to use _list1 to rearrange elements in _list2 so that they match the order exactly. What's the cleanest way to do that? Desired output:</p>
  
  <pre><code>_list1 = ["keyName", "test1", "test2"]
  _list2 = ["keyName", "test1", "test2"]
  </code></pre>
  
  <p>I am sorry if this is duplicate but so far I am only able to find answers for list of numbers and using zipped sorted() method.</p>
  
  <p>What if the _list2 is a list of lists?</p>
  
  <pre><code>_list2 = [["test1", "test2", "keyName"], ["test2", "test1", "keyName"]]
  </code></pre>
  
  <p>Desired Output:</p>
  
  <pre><code>_list2 = [["keyName", "test1", "test2"], ["keyName", "test1", "test2"]]
  </code></pre>
  
  <p>One more what if: What if I wanted to sort any other list of objects using _list1 as a key</p>
  
  <pre><code>_list2 = [[object1, object2, object3], [object1, object2, object3]]
  </code></pre>
  
  <p>where:</p>
  
  <pre><code>object1.Name = "keyName"
  object3.Name = "test1"
  object2.Name = "test2"
  </code></pre>
  
  <p>so effectively I would expect output of:</p>
  
  <pre><code>_list2 = [[object1, object3, objec1], [object1, object3, objec1]]
  </code></pre>
  
  <p>Is that possible?</p>