title: Why dictionaries (dict_items) support union (__or__) but not addition (__add__)?
body: <p>Example to illustrate:</p>
  
  <pre><code>&gt;&gt;&gt; a = dict(eggs='eggs', spam='spam')
  &gt;&gt;&gt; b = dict(spam='spam', ham='ham')
  &gt;&gt;&gt; dict(a.items() | b.items())
  {'eggs': 'eggs', 'ham': 'ham', 'spam': 'spam'}
  </code></pre>
  
  <p>Meanwhile...</p>
  
  <pre><code>&gt;&gt;&gt; dict(a.items() + b.items())
  Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
  TypeError: unsupported operand type(s) for +: 'dict_items' and 'dict_items'
  </code></pre>
  
  <p>Is there a reason for this? Wouldn't it be reasonable to assume that addition and union should do the same for dictionaries?</p>
  
  <p>In Python 2 this works perfectly fine:</p>
  
  <pre><code>&gt;&gt;&gt; dict(a.items() + b.items())
  {'eggs': 'eggs', 'ham': 'ham', 'spam': 'spam'}
  </code></pre>
  
  <p>Although in Python 2 <code>.items()</code> returns a regular list (in contrast to <code>dict_items</code>), so maybe it's by accident.</p>
  
  <hr>
  
  <p>Finally, I don't think "what happens if keys have different values"-dilemma applies here as operator <code>|</code> doesn't seem to mind anyway (one of two values is selected seemingly at random).</p>