How do I return a new dictionary if the keys in one dictionary, match the keys in another dictionary?

Using collections module

Ex:

from collections import defaultdict, Counter

d = { 94111: {'a': 5,  'b': 7,  'd': 7}, 
      95413: {'a': 6,  'd': 4}, 
      84131: {'a': 5,  'b': 15, 'c': 10, 'd': 11}, 
      73173: {'a': 15, 'c': 10, 'd': 15}, 
      80132: {'b': 7,  'c': 7,  'd': 7} }

states = {94111: "TX", 84131: "TX", 95413: "AL", 73173: "AL", 80132: "AL"}

result = defaultdict(Counter)
for k,v in d.items():
    if k in states:
        result[states[k]] += Counter(v)
print(result)

Output:

defaultdict(<class 'collections.Counter'>, {'AL': Counter({'d': 26, 'a': 21, 'c': 17, 'b': 7}), 
'TX': Counter({'b': 22, 'd': 18, 'a': 10, 'c': 10})})

You can just use defaultdict and count in a loop:

expected_output = defaultdict(lambda: defaultdict(int))
for postcode, state in states.items():
     for key, value in d.get(postcode, {}).items():
         expected_output[state][key] += value