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