title: List of Dicts comparision to match between lists and detect value changes in Python
body: <p>I have a list of dictionaries that I get back from a web service call,</p>
  
  <pre><code>listA = [{'name':'foo', 'val':'x'}, 
           {'name':'bar', 'val':'1'},
           {'name':'alice','val':'2'}]
  </code></pre>
  
  <p>I need to compare the results from the previous call to the service and pull out changes. So on the next call I may get:</p>
  
  <pre><code>listB = [{'name':'foo', 'val':'y'},
           {'name':'bar', 'val':'1'},
           {'name':'eve','val':'z'}]
  </code></pre>
  
  <p>The ordering is not guaranteed and nor is the length of list. The names won't change. The actual data has several more keys, but I'm only concerned with 'val'.</p>
  
  <p>I am trying to find a way to get back a list of the names that have had their values change between calls only for the names that are in both lists.</p>
  
  <pre><code>changed = ['foo'] # or [{'name':'foo'}]
  </code></pre>