Back

Explore Courses Blog Tutorials Interview Questions
+1 vote
1 view
in Python by (580 points)

I have this dictionary:

map_old = { 'p': 8, 'q':9 }

How can I invert this map to get:

 

map_inv = { 8: 'p', 9: 'q' } 

1 Answer

0 votes
by (10.9k points)

There are various ways of doing this, some of them are a follows:

1. Inverting with map and reversed

map_inv = dict(map(reversed,map_old.items()))

2.Inverting with a comprehension

For Python 2.7.x use:

map_inv = {v: k for k, v in map_old.iteritems()} 

For Python 3 and higher version use:

map_inv = {v: k for k, v in map_old.items()}

3.Inverting with a Defaultdict

 from collections import defaultdict

map_inv = defaultdict(list)

{map_inv[v].append(k) for k, v in map_old.items()}

4.Inverting with a for loop:

map_inv = dict()

for key, value in map_old.items():

map_inv.setdefault(value, list()).append(key)

 

The preferable way is by using the dictionary comprehension but it has a constraint that it cannot work with non-unique values. So, if you are working with non-unique values then refer to the other methods.

Hope it helps!

Related questions

0 votes
1 answer
asked Jul 3, 2019 in Python by Sammy (47.6k points)
0 votes
1 answer
asked Jan 2 in Python by laddulakshana (12.7k points)
0 votes
1 answer
asked Oct 30, 2020 in Python by Sudhir_1997 (55.5k points)
0 votes
1 answer
asked Jul 13, 2020 in Python by ashely (50.2k points)
Welcome to Intellipaat Community. Get your technical queries answered by top developers!

28.4k questions

29.7k answers

500 comments

94k users

Browse Categories

...