Skip to content

Home

Invert a dictionary

You can invert a dictionary with non-unique hashable values, using some simple Python code. First, you need to use a collections.defaultdict with list as the default value for each key.

Then, you can map the values of the dictionary to keys using dict.append(). Finally, you can convert the collections.defaultdict to a regular dictionary using dict().

from collections import defaultdict

def collect_dictionary(obj):
  inv_obj = defaultdict(list)
  for key, value in obj.items():
    inv_obj[value].append(key)
  return dict(inv_obj)

ages = {
  'Peter': 10,
  'Isabel': 10,
  'Anna': 9,
}
collect_dictionary(ages) # { 10: ['Peter', 'Isabel'], 9: ['Anna'] }

More like this

Start typing a keyphrase to see matching snippets.