Programa de Python para intercambiar claves y valores en el diccionario

El diccionario es una estructura de datos bastante útil en la programación que generalmente se usa para codificar una clave particular con valor para que puedan recuperarse de manera eficiente. Analicemos varias formas de intercambiar las claves y los valores en el Diccionario de Python. 

Método n. ° 1 (no funciona cuando hay varios valores iguales): una solución ingenua puede ser algo como simplemente intercambiar la clave y los valores respectivamente. 

Ejemplo:

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])

Producción

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

Pero hay un problema con este enfoque. En nuestro ejemplo, tenemos varias claves con los mismos valores, es decir, (‘A’, 67) y (‘G’, 67) y las otras claves que tienen los mismos valores son (‘B’, 23) y (‘H’, 23). Pero en el resultado, obtuvimos solo una clave de cada uno. es decir, obtuvimos solo (‘G’, 67) y (‘B’, 23). Entonces, aquí hay otro enfoque para lidiar con este problema: 

Método n. ° 2 (maneja múltiples valores iguales): en este enfoque, verificaremos si el valor ya está presente o no. Si está presente, simplemente agréguelo a la lista. 

Ejemplo:

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])

Producción

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']

Método 3: Usar la comprensión de listas y el conjunto

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)
Producción

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

Método 4: Usar el método get()

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)
Producción

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

Método 5: Usar el método SetDefault() del diccionario

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)
Producción

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

Método 6: Uso de 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))
Producción

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

Publicación traducida automáticamente

Artículo escrito por Vishal Chaudhary 2 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *