title: Create or append to a list in a dictionary - can this be shortened?
body: <p>Can this Python code be shortened and still be readable using itertools and sets?</p>
  
  <pre><code>result = {}
  for widget_type, app in widgets:
      if widget_type not in result:
          result[widget_type] = []
      result[widget_type].append(app)
  </code></pre>
  
  <p>I can think of this only:</p>
  
  <pre><code>widget_types = zip(*widgets)[0]
  dict([k, [v for w, v in widgets if w == k]) for k in set(widget_types)])
  </code></pre>