A veces, al trabajar con el diccionario de Python, uno puede tener un problema en el que desea obtener pares clave-valor que sean simétricos, es decir, que tenga un par clave-valor del mismo valor, independientemente de que el valor real sea una clave o un valor. Analicemos ciertas formas en que se puede realizar esta tarea.
Método #1: Usar generador + bucle
Esta tarea se puede resolver en el método de fuerza bruta utilizando bucles y generadores al generar en tiempo de ejecución los valores de los pares clave-valor coincidentes.
# Python3 code to demonstrate working of # Find Symmetric Pairs in dictionary # using generator + loop # generator function to perform task def find_sym_pairs(test_dict): for key in test_dict.keys(): val = test_dict.get(key) if test_dict.get(val) == key: yield key, val return # Initializing dict test_dict = {'a' : 1, 'b' : 2, 'c' : 3, 1 : 'a', 2 : 'b'} # printing original dict print("The original dict is : " + str(test_dict)) # Find Symmetric Pairs in dictionary # using generator + loop res = [] for key, val in find_sym_pairs(test_dict): temp = (key, val) res.append(temp) # printing result print("The pairs of Symmetric values : " + str(res))
The original dict is : {'a': 1, 1: 'a', 'c': 3, 'b': 2, 2: 'b'} The pairs of Symmetric values : [('a', 1), (1, 'a'), ('b', 2), (2, 'b')]
Método #2: Usar la comprensión de listas
Esta tarea también se puede realizar como una sola línea utilizando la comprensión de listas como una forma abreviada de realizar una solución basada en bucles.
# Python3 code to demonstrate working of # Find Symmetric Pairs in dictionary # Using list comprehension # Initializing dict test_dict = {'a' : 1, 'b' : 2, 'c' : 3, 1 : 'a', 2 : 'b'} # printing original dict print("The original dict is : " + str(test_dict)) # Find Symmetric Pairs in dictionary # Using list comprehension temp = [(key, value) for key, value in test_dict.items()] res = [(x, y) for (x, y) in temp if (y, x) in temp] # printing result print("The pairs of Symmetric values : " + str(res))
The original dict is : {'a': 1, 1: 'a', 'c': 3, 'b': 2, 2: 'b'} The pairs of Symmetric values : [('a', 1), (1, 'a'), ('b', 2), (2, 'b')]
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA