# Python program to Swap Keys and Values in Dictionary

• Difficulty Level : Basic
• Last Updated : 16 May, 2022

Dictionary is quite a useful data structure in programming that is usually used to hash a particular key with value so that they can be retrieved efficiently. Let’s discuss various ways of swapping the keys and values in Python Dictionary.

Method#1 (Does not work when there are multiple same values): One naive solution maybe something like just swapping the key and values respectively.

Example:

```Input : {'A': 67, 'B': 23, 'C': 45, 'D': 56, 'E': 12, 'F': 69, 'G': 67, 'H': 23}
Output: {67: 'G', 69: 'F', 23: 'H', 56: 'D', 12: 'E', 45: 'C'}```

## Python3

 `# Python3 code to demonstrate ``# swap of key and value``  ` `# initializing dictionary``old_dict ``=` `{``'A'``: ``67``, ``'B'``: ``23``, ``'C'``: ``45``, ``'D'``: ``56``, ``'E'``: ``12``, ``'F'``: ``69``, ``'G'``: ``67``, ``'H'``: ``23``}` `new_dict ``=` `dict``([(value, key) ``for` `key, value ``in` `old_dict.items()])``  ` `# Printing original dictionary``print` `("Original dictionary ``is` `: ")``print``(old_dict)` `print``()` `# Printing new dictionary after swapping keys and values``print` `("Dictionary after swapping ``is` `:  ")``print``("keys: values")``for` `i ``in` `new_dict:``    ``print``(i, " :  ", new_dict[i])`

Output

```Original dictionary is :
{'D': 56, 'E': 12, 'C': 45, 'A': 67, 'F': 69, 'H': 23, 'B': 23, 'G': 67}

Dictionary after swapping is :
keys: values
67  :   G
69  :   F
23  :   B
56  :   D
12  :   E
45  :   C```

But there is a problem with this approach. In our example, we have multiple keys with the same values i.e. (‘A’, 67) and (‘G’, 67) and the other keys having the same values are (‘B’, 23) and (‘H’, 23). But in the result, we obtained only one key from each. i.e we obtained only (‘G’, 67) and (‘B’, 23). So, here’s another approach to deal with this problem:

Method#2 (Handles multiple same values): In this approach, we will check if the value is already present or not. If present then just append it to the list.

Example:

```Input : {'A': 67, 'B': 23, 'C': 45, 'E': 12, 'F': 69, 'G': 67, 'H': 23}
Output: {45: ['C'], 67: ['A', 'G'], 12: ['E'], 69: ['F'], 23: ['B', 'H']}```

## Python3

 `# Python3 code to demonstrate ``# swap of key and value``  ` `# initializing dictionary``old_dict ``=` `{``'A'``: ``67``, ``'B'``: ``23``, ``'C'``: ``45``, ``'E'``: ``12``, ``'F'``: ``69``, ``'G'``: ``67``, ``'H'``: ``23``}` `# Printing original dictionary``print` `("Original dictionary ``is` `: ")``print``(old_dict)` `print``()``new_dict ``=` `{}``for` `key, value ``in` `old_dict.items():``   ``if` `value ``in` `new_dict:``       ``new_dict[value].append(key)``   ``else``:``       ``new_dict[value]``=``[key]` `# Printing new dictionary after swapping``# keys and values``print` `("Dictionary after swapping ``is` `:  ")``print``("keys: values")``for` `i ``in` `new_dict:``    ``print``(i, " :", new_dict[i])`

Output

```Original dictionary is :
{'F': 69, 'G': 67, 'H': 23, 'A': 67, 'C': 45, 'B': 23, 'E': 12}

Dictionary after swapping is :
keys: values
45  : ['C']
67  : ['G', 'A']
12  : ['E']
69  : ['F']
23  : ['H', 'B']```

Method 3: Using List Comprehension and Set

## Python3

 `# Python code to swap key and value``# of dictionary using list comprehension``# and Set` `dict1 ``=` `{``"a"``: ``1``, ``"b"``: ``2``, ``"c"``: ``3``, ``"d"``: ``2``}``dict2 ``=` `{}` `dict2 ``=` `dict``([(v, [k ``for` `k, v1 ``in` `dict1.items() ``if` `v1 ``=``=` `v])``              ``for` `v ``in` `set``(dict1.values())])` `print``(dict2)`

Output

`{1: ['a'], 2: ['b', 'd'], 3: ['c']}`

Method 4: Using get() Method

## Python3

 `# Python code to swap key and value``# of dictionary using Get() Method` `dict1 ``=` `{``"a"``: ``1``, ``"b"``: ``2``, ``"c"``: ``3``, ``"d"``: ``2``}``dict2 ``=` `{}` `for` `k, v ``in` `dict1.items():``    ``dict2[v] ``=` `dict2.get(v, []) ``+` `[k]` `print``(dict2)`

Output

`{1: ['a'], 2: ['b', 'd'], 3: ['c']}`

Method 5: Using Dictionary SetDefault() Method

## Python3

 `# Python code to swap key and value``# of dictionary using Dictionary``# Setdefault() Method` `dict1 ``=` `{``"a"``: ``1``, ``"b"``: ``2``, ``"c"``: ``3``, ``"d"``: ``2``}``dict2 ``=` `{}` `for` `i ``in` `dict1:``    ``dict2.setdefault(dict1[i], []).append(i)` `print``(dict2)`

Output

`{1: ['a'], 2: ['b', 'd'], 3: ['c']}`

Method 6: Using DefaultDict

## Python3

 `# Python code to swap key and value``# of dictionary using defaultdict` `from` `collections ``import` `defaultdict` `dict1 ``=` `{``"a"``: ``1``, ``"b"``: ``2``, ``"c"``: ``3``, ``"d"``: ``2``}` `dict2 ``=` `defaultdict(``list``)` `{dict2[v].append(k) ``for` `k, v ``in` `dict1.items()}` `print``(``dict``(dict2))`

Output

`{1: ['a'], 2: ['b', 'd'], 3: ['c']}`

My Personal Notes arrow_drop_up