Intersection and Difference of two dictionaries
<p>Given two dictionaries, I want to look at their intersction and difference and perform f function on the elements that intersect and perform g on the unique elements, Here's how I found out what the unique and intersecting elements are where d1 and d2 are two dictionaries, How do i print out the d_intersection and d_difference as dictionaries inside a tuple?  The output should look something like this ({intersecting keys,values}, {difference keys,values})
for example: given </p>

<pre><code>d1 = {1:30, 2:20, 3:30, 5:80}

d2 = {1:40, 2:50, 3:60, 4:70, 6:90}
</code></pre>

<p>The output should be <code>({1: 70, 2: 70, 3: 90}, {4: 70, 5: 80, 6: 90})</code></p>

<pre><code>dic = {}
d_intersect = set(d1) &amp; set(d2)
d_difference =  set(d1) ^ set(d2)
for i in d_intersect:
    dic.update({i : f(d1[i],d2[i])})
for j in d_difference:
    dic.update({j : g(d1[j],d2[j])})
</code></pre>

<p>Can someone tell me where I was going wrong and why does my code give key error 4?</p>

<p>Here's one way of doing it, though there may be a more efficient method.</p>

<pre><code>d1 = {1:30, 2:20, 3:30, 5:80}
d2 = {1:40, 2:50, 3:60, 4:70, 6:90}

d_intersect = {} # Keys that appear in both dictionaries.
d_difference = {} # Unique keys that appear in only one dictionary.

# Get all keys from both dictionaries.
# Convert it into a set so that we don't loop through duplicate keys.
all_keys = set(d1.keys() + d2.keys()) # Python2.7
#all_keys = set(list(d1.keys()) + list(d2.keys())) # Python3.3

for key in all_keys:
    if key in d1 and key in d2:
        # If the key appears in both dictionaries, add both values
        # together and place it in intersect.
        d_intersect[key] = d1[key] + d2[key]
    else:
        # Otherwise find out the dictionary it comes from and place
        # it in difference.
        if key in d1:
            d_difference[key] = d1[key]
        else:
            d_difference[key] = d2[key]
</code></pre>

<blockquote>
  <p>Output:</p>
  
  <p>{1: 70, 2: 70, 3: 90}</p>
  
  <p>{4: 70, 5: 80, 6: 90}</p>
</blockquote>

python dictionary