inv_map = {v: k for k, v in my_map.items()}
# Invert a dictionary that can have several keys mapping to the same value
# In the inverse dictionary every value is mapped to the list of its keys
D={'a':1, 'b':1, 'c':2, 'd':2, 'e':3}
D_inv={}
for k,v in D.items(): D_inv[v]=D_inv.get(v,[])+[k]
orig = { 1:'A', 2:'B', 3:'C' }
new = dict(zip(orig.values(), orig.keys()))
new == {'A': 1, 'B': 2, 'C': 3} #True
d = {'a':1, 'b':2, 'c':3}
inverted_d = {}
for k, v in d.items():
inverted_d[v] = k
# invert a dictionary
def inv_dict(obj):
return { value: key for key, value in obj.items() }
d = {'apple':1, 'oranges':2, 'bananas':3}
print(d)
print(inv_dict(d))
# Output:
# {1: 'apple', 2: 'oranges', 3: 'bananas'}
my_dict = {
'Izuku Midoriya': 'One for All',
'Katsuki Bakugo': 'Explosion',
'All Might': 'One for All',
'Ochaco Uraraka': 'Zero Gravity'
}
# Use to invert dictionaries that have unique values
my_inverted_dict = dict(map(reversed, my_dict.items()))
# Use to invert dictionaries that have unique values
my_inverted_dict = {value: key for key, value in my_dict.items()}
# Use to invert dictionaries that have non-unique values
from collections import defaultdict
my_inverted_dict = defaultdict(list)
{my_inverted_dict[v].append(k) for k, v in my_dict.items()}
# Use to invert dictionaries that have non-unique values
my_inverted_dict = dict()
for key, value in my_dict.items():
my_inverted_dict.setdefault(value, list()).append(key)
# Use to invert dictionaries that have lists of values
my_dict = {value: key for key in my_inverted_dict for value in my_inverted_dict[key]}